Attività di distribuzione Web non riuscita. (L’inizializzatore di tipo per “Microsoft.Web.Deployment.DeploymentManager” ha generato un’eccezione).

Ricevo il seguente errore quando utilizzo la distribuzione Web da Visual Studio 2010. Attività di distribuzione Web non riuscita. (L’inizializzatore di tipo per “Microsoft.Web.Deployment.DeploymentManager” ha generato un’eccezione).

Improvvisamente ho iniziato a ricevere questo errore! Ho pubblicato il mio sito molte volte con tutte le stesse impostazioni, ma all’improvviso ha iniziato a darmi questo errore. Potrebbe essere qualcosa nelle proprietà del sito web? Sto usando asp.net e ho Windows 7 e la pubblicazione su Windows Server R2. Per favore aiuto!

Ok, quindi ho riscontrato questo problema e nessuna di queste risposte ha funzionato per me. L’ho ridotto a una singola riga di codice, vale a dire:

var deploymentOptions = new Microsoft.Web.Deployment.DeploymentBaseOptions(); 

Se non lo si trasferisce manualmente su DeploymentManager, questo istanzia internamente verrà istanziato. Ancora più interessante è che questo codice funzionava bene per me come l’unica linea di un’app per console mentre falliva se l’ho inserito in un test di unità (avviato con Vstest).

Ecco il corpo completo dell’eccezione:

 System.TypeInitializationException occurred HResult=-2146233036 Message=The type initializer for 'Microsoft.Web.Deployment.DeploymentManager' threw an exception. Source=Microsoft.Web.Deployment TypeName=Microsoft.Web.Deployment.DeploymentManager StackTrace: at Microsoft.Web.Deployment.DeploymentManager.GetLinkExtensions() at Microsoft.Web.Deployment.DeploymentBaseOptions..ctor() at SimpleTest.Test.UnitTest1.TestMethod1() in f:\Source\Projects\SimpleTest.Test\UnitTest1.cs:line 12 InnerException: System.TypeInitializationException HResult=-2146233036 Message=The type initializer for 'Microsoft.Web.Deployment.BuiltInTypesCache' threw an exception. Source=Microsoft.Web.Deployment TypeName=Microsoft.Web.Deployment.BuiltInTypesCache StackTrace: at Microsoft.Web.Deployment.BuiltInTypesCache.get_Factories() at Microsoft.Web.Deployment.DeploymentProviderFactoryCollection.LoadFromRegistry() at Microsoft.Web.Deployment.DeploymentProviderFactoryCollection..ctor() at Microsoft.Web.Deployment.DeploymentManager.LoadDeploymentManagerSettings() at Microsoft.Web.Deployment.DeploymentManager..cctor() InnerException: Microsoft.Web.Deployment.DeploymentException HResult=-2146233088 Message=The provider 'Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderFactory' could not be loaded. Source=Microsoft.Web.Deployment StackTrace: at Microsoft.Web.Deployment.DeploymentProviderFactory.Create(Type type) at Microsoft.Web.Deployment.BuiltInTypesCache.InspectTypesForWebDeployAttributes(IEnumerable`1 types, String dllName) at Microsoft.Web.Deployment.BuiltInTypesCache..cctor() InnerException: Microsoft.Web.Deployment.DeploymentException HResult=-2146233088 Message=The type 'Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderFactory' could not be loaded. The configuration settings may not be valid. Source=Microsoft.Web.Deployment StackTrace: at Microsoft.Web.Deployment.ReflectionHelper.CreateInstance[T](Type type, Object[] constructorArguments) at Microsoft.Web.Deployment.DeploymentProviderFactory.Create(Type type) InnerException: System.TypeInitializationException HResult=-2146233036 Message=The type initializer for 'Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderBaseProviderFactory' threw an exception. Source=mscorlib TypeName=Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderBaseProviderFactory StackTrace: at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) at System.Activator.CreateInstance(Type type, Object[] args) at Microsoft.Web.Deployment.ReflectionHelper.CreateInstance[T](Type type, Object[] constructorArguments) InnerException: System.IO.FileNotFoundException HResult=-2147024894 Message=Could not load file or assembly 'Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Source=Microsoft.Data.Tools.Schema.DbSqlPackage FileName=Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a FusionLog="" StackTrace: at Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderBaseProviderFactory..cctor() InnerException: 

Dopo aver parlato con il team di Microsoft che possiede questo componente, ho appreso una soluzione semplice:

Cerca una chiave nel registro sotto i seguenti percorsi che punta all’assembly del problema ed eliminalo:

 HKLM\Software\Microsoft\IIS Extensions\msdeploy\3\extensibility HKLM\Software\Wow6432Node\Microsoft\IIS Extensions\msdeploy\3\extensibility 

La chiave del registro dei problemi è installata da SQL.

Ho avuto lo stesso problema ma l’installazione di SQL 2012 e la modifica del registro non l’hanno risolto. Dopo aver reinstallato Web Deploy 3.5 sulla mia macchina di sviluppo, le cose sono state chiarite.

Basta disinstallare il provider Microsoft dbsqlpackage. Vai a “Programmi e funzionalità”. Non è più usato.

Per me, ho riavviato Visual Studio e ho ricostruito il progetto e sono stato in grado di pubblicare di nuovo (non ho visto questa risposta suggerita e ha funzionato per me). Forse questo è il tuo primo passo prima di provare altre risposte a questa domanda.

Ho reinstallato Web Deployment 3.5 per farlo funzionare su Windows 8.1. Imansible trovare i file nel registro.

Sono stato in grado di risolvere questo errore reinstallando SQL Server. Ho reinstallato SQL 2012 Express, da MSDN, con questo nome file.

solo 940 mb di download. Sembra che Whatevrer sia stato riparato da tutte le disinstallazioni manuali della scorsa settimana.

en_sql_server_2012_express_edition_with_tools_with_sp1_x64.exe

Spero che aiuti.

Forse hai bisogno di eseguire aspnet_regiis al prompt dei comandi di Visual Studio.

Mi sembra di soffrire lo stesso problema, ma solo quando eseguito localmente su IIS Express (la mia istanza di IIS 8 esegue questo codice bene).

Quando rintraccio l’eccezione verso il basso nello stack (tre eccezioni interne). Sembra che l’eccezione effettiva sia la seguente:

 Could not load file or assembly 'Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.":"Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 

La cosa strana è che questa DLL risiede in @ C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.Data.Tools.Utilities.dll ma in realtà ho questa DLL che si trova lì.

È anche strano che questo avvenga solo ogni volta che provo a inizializzare una nuova DeploymentBaseOptions . Prima di fare qualsiasi cosa con esso (quindi non sto facendo alcuna chiamata SQL, e non ho nemmeno impostato alcuna proprietà su di esso.

Pensieri?

Ho già avuto SSMS 2014 e questo non sembra aver causato alcun problema con la pubblicazione in VS. Il problema è sorto per me dopo l’installazione del motore di database di SQL Server 2014.

Le voci di registro indicate da Victor erano vuote. La reinstallazione di VS2012 risolve il problema.

Fare una “riparazione” della mia installazione di SQL Server ha risolto il problema per me.