web-dev-qa-db-fra.com

La tâche de déploiement Web a échoué. (L'initialiseur de type pour 'Microsoft.Web.Deployment.DeploymentManager' a levé une exception.)

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!

58
coder

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.

107
Victor

Désinstallez simplement le fournisseur Microsoft dbsqlpackage. Allez dans "Programmes et fonctionnalités". Il n'est plus utilisé.

19
code5

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.

18
Ryan

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.

5
alexk

J'ai réinstallé Web Deployment 3.5 pour le faire fonctionner sur Windows 8.1. Impossible de trouver les fichiers dans le registre.

3
sindrem

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.

2
ScottCate

Faire une "réparation" de mon installation SQL Server a résolu le problème pour moi.

1
vidalsasoon

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?

1
Doug

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.

1
user883348

Vous devez peut-être exécuter aspnet_regiis à l'invite de commande de Visual Studio.

1
ZeroDivide