web-dev-qa-db-ja.com

Webデプロイメントタスクが失敗しました。 (「Microsoft.Web.Deployment.DeploymentManager」のタイプ初期化子が例外をスローしました。)

Visual Studio 2010からWeb配置を使用すると、次のエラーが発生します。Web配置タスクが失敗しました。 (「Microsoft.Web.Deployment.DeploymentManager」のタイプ初期化子が例外をスローしました。)

突然このエラーが発生し始めました!同じ設定で何度もウェブサイトを公開しましたが、突然このエラーが発生し始めました。それはウェブサイトのプロパティに何かありますか?私はasp.netを使用していて、Windows 7を使用してWindows Server R2に公開しています。助けてください!

58
coder

さて、私はこの問題にぶつかりましたが、これらの答えはどれもうまくいきませんでした。つまり、次の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:

このコンポーネントを所有しているマイクロソフトのチームと話し合った後、私は簡単な解決策を学びました:

問題のアセンブリを指す次のパスの下のレジストリでキーを探し、それを削除します。

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

問題のレジストリキーはSQLによってインストールされます。

107
Victor

Microsoft dbsqlpackageプロバイダーをアンインストールするだけです。 「プログラムと機能」に移動します。使用されなくなりました。

19
code5

同じ問題がありましたが、SQL 2012をインストールしてレジストリを変更しても問題は解決しませんでした。開発マシンに Web Deploy 3.5 を再インストールした後、問題は解決しました。

18
Ryan

私にとっては、Visual Studioを再起動してプロジェクトを再構築したところ、再度公開することができました(この回答が表示されなかったので、うまくいきました)。たぶんこれは、この質問に対して他の答えを試す前のステップです。

5
alexk

Windows 8.1で動作するように、Web Deployment 3.5を再インストールしました。レジストリにファイルが見つかりませんでした。

3
sindrem

SQL Serverを再インストールすることで、このエラーを解決できました。このファイル名を使用して、MSDNからSQL 2012 Expressを再インストールしました。

ダウンロードは940 MBのみです。先週私が手動でアンインストールしたことでジャッキアップしたwhatevrerを修復したようです。

en_sql_server_2012_express_edition_with_tools_with_sp1_x64.exe

お役に立てば幸いです。

2
ScottCate

SQL Serverインストールの「修復」を行うと、問題が解決しました。

1
vidalsasoon

私は同じ問題に苦しんでいるようですが、IIS Expressでローカルで実行している場合のみです(私のIIS 8インスタンスはこのコードを正常に実行します)。

例外をスタックで追跡すると(3つの内部例外)。 actual例外は次のようです:

_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呼び出しを行っておらず、プロパティも設定していません。

考え?

1
Doug

私はすでにSSMS 2014を持っていましたが、これはVSでの公開に問題を引き起こさないようでした。この問題は、SQL Server 2014データベースエンジンをインストールした後で発生しました。

ビクターが参照したレジストリエントリは空白でした。 VS2012を再インストールすると問題が修正されました。

1
user883348

多分あなたはビジュアルスタジオのコマンドプロンプトでaspnet_regiisを実行する必要があります。

1
ZeroDivide