J'obtiens l'erreur suivante lorsque j'utilise le déploiement Web à partir de Visual Studio 2010. La tâche de déploiement Web a échoué. (L'initialiseur de type pour 'Microsoft.Web.Deployment.DeploymentManager' a levé une exception.)
J'ai soudainement commencé à recevoir cette erreur! J'ai publié mon site Web plusieurs fois avec les mêmes paramètres, mais soudain, il a commencé à me donner cette erreur. Serait-ce quelque chose dans les propriétés du site Web? J'utilise asp.net et j'ai Windows 7 et je publie sur Windows Server R2. Aidez-moi!
D'accord, j'ai donc rencontré ce problème et aucune de ces réponses n'a fonctionné pour moi. Je l'ai réduit à une seule ligne de code, à savoir:
var deploymentOptions = new Microsoft.Web.Deployment.DeploymentBaseOptions();
Si vous ne le transmettez pas manuellement à DeploymentManager, il instanciera cet objet en interne. Encore plus intéressant, ce code fonctionnerait bien pour moi en tant que seule ligne d'une application console alors qu'il échouait si je le mettais dans un test unitaire (lancé avec vstest).
Voici le corps complet de l'exception:
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:
Après avoir parlé à l'équipe de Microsoft qui possède ce composant, j'ai appris une solution simple:
Recherchez une clé dans le Registre sous les chemins d'accès suivants qui pointe le problème de l'assembly et supprimez-le:
HKLM\Software\Microsoft\IIS Extensions\msdeploy\3\extensibility
HKLM\Software\Wow6432Node\Microsoft\IIS Extensions\msdeploy\3\extensibility
La clé de registre du problème est installée par SQL.
Désinstallez simplement le fournisseur Microsoft dbsqlpackage. Allez dans "Programmes et fonctionnalités". Il n'est plus utilisé.
J'ai eu le même problème, mais l'installation de SQL 2012 et la modification du registre ne l'ont pas résolu. Après avoir réinstallé Web Deploy 3.5 sur ma machine de développement, les choses se sont redressées.
Pour moi, j'ai redémarré Visual Studio et reconstruit le projet et j'ai pu publier à nouveau (je n'ai pas vu cette réponse suggérée et cela a fonctionné pour moi). C'est peut-être votre première étape avant d'essayer d'autres réponses sur cette question.
J'ai réinstallé Web Deployment 3.5 pour le faire fonctionner sur Windows 8.1. Impossible de trouver les fichiers dans le registre.
J'ai pu résoudre cette erreur en réinstallant SQL Server. J'ai réinstallé SQL 2012 Express, à partir de MSDN, avec ce nom de fichier.
seulement 940 mb de téléchargement. Semble avoir réparé whatevrer j'ai grimpé par tous les désinstallations manuelles la semaine dernière.
en_sql_server_2012_express_edition_with_tools_with_sp1_x64.exe
J'espère que ça aide.
Faire une "réparation" de mon installation SQL Server a résolu le problème pour moi.
Je semble souffrir du même problème, mais uniquement lors de l'exécution locale sur IIS Express (mon IIS 8 exécute correctement ce code)).
Lorsque je traque l'exception dans la pile (trois exceptions internes). Il semble que l'exception réelle soit la suivante:
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 chose étrange avec ceci est que ce DLL semble résider @ C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.Data.Tools.Utilities.dll
mais j'ai en fait ceci DLL assis là.
Il est également étrange que cela ne se produise que lorsque j'essaie d'initialiser un nouveau DeploymentBaseOptions
. Avant de faire quoi que ce soit avec lui (donc je ne fais aucun appel SQL et je n'ai même pas défini de propriétés dessus).
Pensées?
J'avais déjà SSMS 2014 et cela ne semblait pas poser de problème avec la publication dans VS. Le problème est survenu plus tard après l'installation du moteur de base de données SQL Server 2014.
Les entrées de registre mentionnées par Victor étaient vides. La réinstallation de VS2012 a résolu le problème.
Vous devez peut-être exécuter aspnet_regiis
à l'invite de commande de Visual Studio.