Web deployment task failed. (The type initializer for 'Microsoft.Web.Deployment.DeploymentManager' threw an exception.)

后端 未结 10 2168
逝去的感伤
逝去的感伤 2020-12-07 16:41

I am getting the following error when I use web deploy from visual studio 2010. Web deployment task failed. (The type initializer for \'Microsoft.Web.Deployment.DeploymentMa

相关标签:
10条回答
  • 2020-12-07 16:55

    Maybe you need to run aspnet_regiis at the visual studio command prompt.

    0 讨论(0)
  • 2020-12-07 16:56

    Doing a "repair" of my SQL Server installation fixed the problem for me.

    0 讨论(0)
  • 2020-12-07 17:00

    I re-installed Web Deployment 3.5 to make it work on windows 8.1. Couldn't find the files in the registry.

    0 讨论(0)
  • 2020-12-07 17:01

    For me, I restarted Visual Studio and rebuilt the project and I was able to publish again (I didn't see this answer suggested and it worked for me). Maybe this is your step one before trying other answers on this question.

    0 讨论(0)
  • 2020-12-07 17:02

    I seem to be suffering the same problem, but only when running locally on IIS Express (my IIS 8 instance runs this code fine).

    When I track the exception down the stack (three inner exceptions). It appears that the actual exception is the following:

    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
    

    The weird thing with this is that this DLL appears to reside @ C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.Data.Tools.Utilities.dll but I actually have this DLL sitting there.

    It is also strange this this is only happening whenever i try to initialise a new DeploymentBaseOptions. Before I do anything with it (so I am not making any SQL calls, and haven't even set any properties on it.

    Thoughts?

    0 讨论(0)
  • 2020-12-07 17:03

    Okay, so I hit this problem and none of these answers worked for me. I boiled it down to a single line of code, namely:

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

    If you don't manually pass this to DeploymentManager it will internally instantiate this object. Even more interesting was that this code would run fine for me as the only line of a console app while it failed if I put it into a unit test (kicked off with vstest).

    Here's the full body of the 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:
    

    After talking to the team in Microsoft that owns this component I learned a simple solution:

    Look for a key in the registry under the following paths that points the the problem assembly and delete it:

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

    (After cleaning up the registry, remember to restart Visual Studio)

    The problem registry key is installed by SQL.

    0 讨论(0)
提交回复
热议问题