【问题标题】:Web deployment task failed. (The type initializer for 'Microsoft.Web.Deployment.DeploymentManager' threw an exception.)Web 部署任务失败。 (“Microsoft.Web.Deployment.DeploymentManager”的类型初始化程序引发了异常。)
【发布时间】:2011-09-15 03:06:22
【问题描述】:

我在使用 Visual Studio 2010 中的 Web 部署时收到以下错误。 Web 部署任务失败。 ('Microsoft.Web.Deployment.DeploymentManager' 的类型初始化程序引发了异常。)

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

【问题讨论】:

  • 你最近有没有在你的电脑上安装过任何东西?
  • 不,没什么。但我的电脑确实死机并重新启动,我怀疑这就是它开始的时候。
  • 如果维克多的回答对你有帮助,别忘了接受它作为答案。

标签: c# asp.net visual-studio-2010 publish web-deployment


【解决方案1】:

好的,所以我遇到了这个问题,但这些答案都不适合我。我把它归结为一行代码,即:

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

如果您不手动将其传递给 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:

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

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

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

(清理注册表后记得重启Visual Studio)

问题注册表项是由 SQL 安装的。

【讨论】:

  • 这对我也有用。我希望我能给你1000分。我在 Azure 持续部署的关联变更集和工作项上遇到了异常。 Could not load file or assembly 'Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0我其实在这里问了一个问题:serverfault.com/questions/524848/…
  • 没错!谢谢@维克多。有趣的是,最近我卸载了所有与 SQL 2012 相关的东西。但这些注册表项仍然存在。
  • @Vertigo:昨天我还卸载了很多 SQL Server 2012 的东西,因为我安装了 SQL Server 2014……没想到这会破坏 Web 部署。 :D 就我而言,我重新安装了 Web Deploy 3.5 并删除了这两个注册表项。重新启动 VS 2013,现在它又可以工作了。
  • 我遇到了与 Leniel 相同的情况,卸载 SQL Server 2012 后出现问题。我删除了他们重新启动 VS 的密钥,并且它起作用了。不需要重新安装 Wed Deploy。
  • 这个为我修复了 IIS 导入应用程序。非常感谢!
【解决方案2】:

我遇到了同样的问题,但安装 SQL 2012 并更改注册表并没有解决它。在我的开发机器上重新安装Web Deploy 3.5 后,事情就解决了。

【讨论】:

  • 这非常有效。自上次工作以来,我在安装 2014 之后也卸载了 SQL 2012。我在查找时找不到任何这些注册表项。
【解决方案3】:

只需卸载 Microsoft dbsqlpackage 提供程序。转到“程序和功能”。已不再使用。

【讨论】:

  • 在我的机器上它实际上是“Microsoft Web Deploy dbSqlPackage Provider”
  • 在花了很多时间解决这个问题后,也为我工作
【解决方案4】:

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

【讨论】:

  • 我已经遇到过两次这个问题,并查找了 Victor 提到的注册表项,但他们没有找到。重启 VS 两次都解决了这个问题。
  • 这是一个简单但非常重要的答案。谢谢@alexk!
  • 使用 VS2022 为我工作,我很高兴有人提醒我先尝试简单的解决方案。 +1
  • 是的。还使用 Visual Studio 2022 为我工作。
【解决方案5】:

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

【讨论】:

    【解决方案6】:

    我能够通过重新安装 SQL Server 来解决此错误。我用这个文件名从 MSDN 重新安装了 SQL 2012 Express。

    仅 940 mb 下载。似乎已经修复了我上周手动卸载的所有内容。

    en_sql_server_2012_express_edition_with_tools_with_sp1_x64.exe

    希望对你有帮助。

    【讨论】:

    • 我还手动卸载了一些与 SQL Server 相关的东西,但遇到了同样的问题。我运行了VS2012的修复序列,一切恢复正常。
    【解决方案7】:

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

    【讨论】:

    • 是的,我相信你可以在本地运行它并指向你需要的IIS。
    • 那行不通。还有其他建议吗?完整的错误是:C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3588,5):错误:Web 部署任务失败。 (“Microsoft.Web.Deployment.DeploymentManager”的类型初始化程序引发了异常。)
    • 这个错误甚至在它尝试连接到虚拟主机服务器之前就出现了,因为无效的登录凭据不会产生影响。所以这一定是我的结局。
    【解决方案8】:

    我似乎遇到了同样的问题,但只有在 IIS Express 上本地运行时(我的 IIS 8 实例可以正常运行此代码)。

    当我在堆栈中跟踪异常时(三个内部异常)。看来实际异常如下:

    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
    

    奇怪的是,这个 DLL 似乎驻留在@C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.Data.Tools.Utilities.dll,但实际上我有这个 DLL。

    这也很奇怪,只有当我尝试初始化一个新的DeploymentBaseOptions 时才会发生这种情况。在我对它做任何事情之前(所以我没有进行任何 SQL 调用,甚至没有设置任何属性。

    想法?

    【讨论】:

    • 某处存在对 SQL 的依赖。我的网络部署一直运行良好,我刚刚卸载了一堆 SQL 的东西。然后这个确切的错误开始发生。
    • 从下面的@Victor 那里寻找解决方案。我还卸载了所有 SQL 2012 的东西。似乎 DAC 将自身注入 MSDeply。
    【解决方案9】:

    我已经拥有 SSMS 2014,这似乎不会导致在 VS 中发布任何问题。安装 SQL Server 2014 数据库引擎后,我后来出现了这个问题。

    Victor 引用的注册表项是空白的。重新安装 VS2012 解决了这个问题。

    【讨论】:

      【解决方案10】:

      对我的 SQL Server 安装进行“修复”解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        相关资源
        最近更新 更多