我試圖經由MSDeploy我的包裝/部署過程的一部分運行命令。特別是,我試圖通過運行installutil對我的DLL來創建自定義事件日誌,但我有指定從部署目錄下的DLL一個相對路徑麻煩。要開始,我將下面的配置添加到我的csproj中,以便在我的Manifest文件中生成runCommand提供程序。請注意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和部署我的文件的Inetpub \ wwwroot文件\ MyTestApp並從下面的清單跑到我的命令:
<runCommand path="installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll ... etc
我遇到的問題是我做的不想將此DLL路徑硬編碼到c:\ inetpub \ etc。如何在默認網站下的我的部署目錄中使用相對路徑進行上述呼叫?理想情況下,我想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 – 2011-10-04 02:57:08