MSDeployを使用してパッケージ化/展開プロセスの一部としてコマンドを実行しようとしています。特に、私はinstallutilを私のDLLの1つに対して実行してカスタムイベントログを作成しようとしていますが、相対パスをデプロイメントディレクトリから指定することに問題があります。まず、Manifestファイルの中にrunCommandプロバイダを生成するために、以下の設定をcsprojに追加しました。 DLLへの絶対パスに注意してください。MSDeploy相対パスを使用したrunCommand
<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to create Custom Event Log -->
<IncludeEventLogCreation>TRUE</IncludeEventLogCreation>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
CreateEventLog;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEventLog" Condition="'$(IncludeEventLogCreation)'=='TRUE'">
<Message Text="Creating Event Log" />
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<path>installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll</path>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<ItemGroup>
msbuildを呼び出した後、これは正しく私のpackage.zipの中に私のマニフェストを生成しました。私はMyTestApp.deploy.cmd/Yを実行したとき、それは正しく場合msdeployと呼ばれ、\ wwwrootの\ MyTestAppをINETPUBために私のファイルを展開し、以下のマニフェストからの私のコマンドを実行した:
<runCommand path="installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll ... etc
を私が午前問題は、私はありますこのDLLパスをc:\ inetpub \ etcにハードコーディングする必要はありません。既定のWebサイトの相対パスを展開ディレクトリから使用して上記の呼び出しを行うにはどうすればよいですか。理想的には、私はMSDeployにこのパスをとり、変数をrunCommandステートメントに渡してDLLを見つけることをお勧めします。それでは、<path>installutil $DeploymentDir\NewTestApp\bin\BusinessLayer.dll</path>
と書くことができます。
私のDLLの絶対パスを毎回使用しないとこれを行う方法はありますか?
を使用することができます。これは、あまりにも、多少の公式の推薦のようだ:http://social.msdn.microsoft.com/Forums/en/msbuild/thread/1044058c-f762-456b-8a68-b0863027ce47 –