Web 部署任务失败(“ Microsoft.Web.DeploymentManager”的类型初始化器抛出异常。)

我得到以下错误时,我使用的网络部署从视觉工作室2010年。 Web 部署任务失败(“ Microsoft.Web.DeploymentManager”的类型初始化器抛出异常。)

我突然开始得到这个错误!我用相同的设置发布了我的网站很多次,但是突然它开始给我这个错误。会不会是网站资产里的什么东西?我正在使用 asp.net,并有 Windows 7和发布到 Windows 服务器 R2。救命啊!

26936 次浏览

也许您需要在可视化工作室命令提示符下运行 aspnet_regiis

我似乎遇到了同样的问题,但只有在 IISExpress 本地运行时(我的 IIS8实例可以很好地运行此代码)。

当我沿着堆栈跟踪异常时(三个内部异常)。看起来 真的异常如下:

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 调用,甚至没有在它上面设置任何属性。

有什么想法吗?

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

只有940兆的下载量。似乎已经修复了我上周手动卸载的东西。

En _ sql _ server _ 2012 _ Express _ edition _ with _ tools _ with _ sp1 _ x64. exe

希望能帮上忙。

好吧,我找到了这个问题,但是没有一个答案对我有用。我将其归结为一行代码,即:

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:

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

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

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

(清除注册表后,请记住重新启动 VisualStudio)

问题注册表项由 SQL 安装。

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

我也有同样的问题,但是安装 SQL 2012和更改注册表并没有解决这个问题。在我的开发机器上重新安装了 Web Deploy 3.5之后,一切都理顺了。

我已经有了 SSMS 2014,这似乎没有造成任何问题发布在 VS 后,问题出现在我后来安装了 SQL Server 2014数据库引擎。

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

我重新安装了 Web Deployment 3.5,使其能够在 Windows 8.1上工作。

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

对 SQLServer 安装进行“修复”为我解决了这个问题。