Я пытаюсь запустить команду как часть процесса упаковки/развертывания через MSDeploy. В частности, я пытаюсь создать собственный журнал событий, запустив installutil против одной из моих DLL, но у меня возникли проблемы с указанием относительного пути к DLL из каталога развертывания. Для начала я добавил приведенную ниже конфигурацию в свой csproj, чтобы сгенерировать провайдер 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 это сгенерировало мой манифест правильно внутри моего пакета .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 –