Web部署任务失败.('Microsoft.Web.Deployment.DeploymentManager'的类型初始化程序引发了异常.)

cod*_*der 58 c# asp.net publish visual-studio-2010 web-deployment

当我从visual studio 2010使用Web部署时,我收到以下错误.Web部署任务失败.('Microsoft.Web.Deployment.DeploymentManager'的类型初始化程序引发了异常.)

我突然开始收到这个错误!我使用所有相同的设置多次发布我的网站,但突然间它开始给我这个错误.它可能是网站属性中的东西吗?我正在使用asp.net并拥有Windows 7并发布到Windows Server R2.请帮忙!

Vic*_*tor 107

好的,所以我遇到了这个问题,这些答案都没有对我有用.我把它归结为一行代码,即:

var deploymentOptions = new Microsoft.Web.Deployment.DeploymentBaseOptions();
Run Code Online (Sandbox Code Playgroud)

如果您不手动将其传递给DeploymentManager,它将在内部实例化此对象.更有意思的是,这个代码对我来说运行良好,作为控制台应用程序的唯一一行,如果我把它放入单元测试失败(用vstest启动).

这是例外的全部内容:

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:
Run Code Online (Sandbox Code Playgroud)

在与拥有该组件的Microsoft团队交谈后,我学到了一个简单的解决方案:

在以下路径下的注册表中查找指向问题程序集并删除它的键:

HKLM\Software\Microsoft\IIS Extensions\msdeploy\3\extensibility
HKLM\Software\Wow6432Node\Microsoft\IIS Extensions\msdeploy\3\extensibility
Run Code Online (Sandbox Code Playgroud)

问题注册表项由SQL安装.

  • 这对我也有用.我希望我能给你1000分.我在Azure持续部署的Associate Changesets和Workitem上获得了一个例外.`无法加载文件或程序集'Microsoft.Data.Tools.Schema.Sql,Version = 10.3.0.0`我实际上在这里问了一个问题:http://serverfault.com/questions/524848/msbuild-failing-on -build前瞻性换较旧版本的微软数据 - 工具 - 舍姆 (11认同)
  • 我有与Leniel相同的场景,卸载SQL Server 2012后的问题.我删除了他们重新启动VS的密钥,并且它有效.不需要重新安装Wed Deploy. (5认同)
  • 究竟!谢谢@Victor.有趣的是,最近我卸载了所有SQL 2012相关的东西.但这些注册表项仍然存在. (2认同)
  • @Vertigo:昨天我还卸载了很多 SQL Server 2012 的东西,因为我安装了 SQL Server 2014...不认为这会破坏 Web 部署。:D 就我而言,我重新安装了 Web Deploy 3.5,并删除了这 2 个注册表项。重新启动 VS 2013,现在它又可以工作了。 (2认同)

cod*_*de5 22

只需卸载Microsoft dbsqlpackage提供程序即可.转到"程序和功能".它已不再使用.

  • 在我的机器上,它实际上是“ Microsoft Web Deploy dbSqlPackage Provider” (3认同)

Rya*_*yan 19

我有同样的问题,但安装SQL 2012和更改注册表没有解决它.在我的开发机器上重新安装Web Deploy 3.5后,事情变得很明朗.


ale*_*exk 5

对我来说,我重新启动Visual Studio并重建项目,我能够再次发布(我没有看到这个答案建议,它对我有用).也许这是你在尝试这个问题的其他答案之前的第一步.

  • 这是一个简单但非常重要的答案。谢谢@alexk! (5认同)
  • 使用 VS2022 为我工作,我很高兴有人提醒我先尝试简单的解决方案。+1 (4认同)
  • 是的。还为我使用 Visual Studio 2022。 (4认同)

sin*_*rem 5

我重新安装了 Web Deployment 3.5 以使其在 Windows 8.1 上运行。在注册表中找不到文件。


Zer*_*ide 1

也许您需要aspnet_regiis在 Visual Studio 命令提示符下运行。