カスタムプロバイダーをMicrosoft Web展開ツールに統合するにはどうすればよいですか? [閉まっている
-
28-09-2019 - |
質問
プロセスの一部として宛先展開マシンでカスタムタスクを実行したいため、カスタムプロバイダーを使用してMicrosoft Web展開ツールとMSDEPLOYを拡張しようとしています。一般的なドキュメントは、カスタムプロバイダー開発以外ではかなり優れていますが、あらゆる種類の拡張機能を実行するためのドキュメントは、ひどいものに対して存在しないようです。
私はこれを数日間研究してきましたが、実際のドキュメントなしではかなり遠くにプロセスに入ることができるいくつかのビットとピースを見つけました。私はプロセスをほとんどハッキングしましたが、今では最後の問題が1つあります。MSDeployはカスタムプロバイダーを認識しません。
Microsoft.web.deployment.deploymentProviderFactoryを拡張する2つのクラスを作成しました(これは、カスタムプロバイダー「Archimedes」の名前に名前が付けられた名前とFriendlyNameプロパティの両方があります)。もう1つは、Microsoft.web.deployment.deploymentObjectProviderを拡張します。オンラインで見つけることができるカスタムBatchProviderの例に従ってこれを行いました。このように見えます:
ArchimedEsproviderFactory(DeploymentProviderFactoryを拡張し、展開プロバイダーファクトリー属性をクラスに割り当てている):
public override string FriendlyName
{
get { return "archimedes"; }
}
public override string Name
{
get { return "archimedes"; }
}
ArchimedEsproviderクラスはDeploymentObjectProviderを拡張し、これを持っています。
public override string Name
{
get { return "archimedes"; }
}
sourcemanifest.xmlファイルにエントリを追加しました:
<archimedes path="..." />
オンラインで見つけた素材によっても指示されていたため、これらのクラスを%プログラムファイルに含むアセンブリファイルを% iis microsoft web deploy 拡張性を配置しました。
おもしろいのは、Visual Studio 2010のパッケージのビルド中に、私のプロバイダーがそのディレクトリからコードを呼び出していることです。そのため、VSは間違いなくそこに配置された私のアセンブリに接続しています(たとえば、例外を投げて、それを見ることができます。それらは、パッケージを構築する過程で投げられました)。
ただし、生成された.cmdファイルからのパッケージの実際のテスト展開中に、プロバイダー「Archimedes」の工場が見つからないというエラーが発生します。また、入力:
MSDeply -verb:dump -source:archimedes -debug
以下を返します:
Microsoft.Web.Deployment.DeploymentException: Unknown factory 'archimedes'.
at Microsoft.Web.Deployment.DeploymentProviderSettingCollection..ctor(String factoryName)
at Microsoft.Web.Deployment.DeploymentProviderOptions..ctor(String factoryName)
at MSDeploy.MSDeploy.GetObjectParameters(Dictionary`2 parameters, Boolean isDestination, DeploymentBaseOptions& retbaseOptions, DeploymentProviderOptions& re
tproviderOptions)
at MSDeploy.MSDeploy.ExecuteWorker()
at MSDeploy.MSDeploy.Execute()
at MSDeploy.MSDeploy.Main(String[] unusedArgs)
Error count: 1.
したがって、カスタムプロバイダー開発のためのコヒーレントの中央ドキュメントソースがないように見えるという事実に加えて(誰もが場所を知っているかどうかを教えてください)、私の主な問題は、何らかの理由でVisual Studioが見て、拡張性フォルダーにダンプしたアセンブリファイルからプロバイダー工場に電話してください。ただし、実際のMSDEPLOY/WebDeployでは表示されません。誰かがアイデアを持っていますか?
トンありがとう...
解決
OK、これは単純な間違いでしたが、パッケージの建物の部分がコードに大丈夫にアクセスし、プロバイダーアセンブリからそれを呼び出したため、非自明な間違いでした。問題は、Webアプリケーションのほぼすべてが4.0フレームワークをターゲットにしているため、カスタムプロバイダーコードを使用して追加したクラスライブラリプロジェクトもターゲットにしています。ターゲットフレームワークを2.0に設定する必要があり、すべて機能し始めました。エラーレポートのどれも、あまり明白ではありませんでした。