Задача сообщества MSBuild GacUtil молча провалилась - PullRequest
4 голосов
/ 26 сентября 2011

У меня есть проект с открытым исходным кодом .NET , основным артефактом которого является DLL, которую необходимо установить в GAC для его основного варианта использования.Поэтому я хочу установить его во время задачи AfterBuild.Я использую задачу GacUtil msbuild из MSBuild Community Extensions .Он не работает.

Мой код MSBuild, который я получил от здесь :

<Target Name="AfterBuild">
  <GacUtil Assemblies="$(TargetName)" />
</Target>

Я использую команду msbuild /t:AfterBuild /verbosity:diagnostic.Я получаю сообщение об ошибке:

Done building target "_CheckForInvalidConfigurationAndPlatform" in project "JustAProgrammer.ADPR.csproj".
Target "AfterBuild" in project "e:\src\JustAProgrammer.ADPR\JustAProgrammer.ADPR\JustAProgrammer.ADPR.csproj" (entry point):
Using "GacUtil" task from assembly "C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll".
Task "GacUtil"
Done executing task "GacUtil" -- FAILED.
Done building target "AfterBuild" in project "JustAProgrammer.ADPR.csproj" -- FAILED.
Done Building Project "e:\src\JustAProgrammer.ADPR\JustAProgrammer.ADPR\JustAProgrammer.ADPR.csproj" (AfterBuild target(s)) -- FAILED.

Я выполняю эту команду из копии cmd.exe, работающей от имени администратора, с gacutil.exe в своем пути.Я использовал эту же командную строку, чтобы успешно установить и удалить эту сборку из GAC, и дважды проверил, что сборка не находится в папке c: \ windows \ assembly.

Как выяснить, почему GacUtilнеудачу?

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Похоже, путь, по которому он пытается добраться до инструмента, неверен (или, по крайней мере, так было в моем случае).Установите для свойства «ToolPath» в задаче «GacUtil» значение «$ (FrameworkSDKDir) bin» следующим образом:

<Target Name="BeforeBuild">
    <GacUtil Command="Uninstall" ToolPath="$(FrameworkSDKDir)bin" Assemblies="$(TargetName)" ContinueOnError="true"/>
</Target>
<Target Name="AfterBuild">
  <GacUtil ToolPath="$(FrameworkSDKDir)bin" Assemblies="$(TargetPath)"/>
</Target>
0 голосов
/ 03 октября 2011

Проверено ли значение $ (TargetName) с помощью задачи «Сообщение»?

Возможно, вам потребуется указать свойство в файле build.proj:

  <PropertyGroup>
    <AssemblyPath></AssemblyPath>
  </PropertyGroup>

  <Target Name="AfterBuild">
    <GacUtil Assemblies="$(AssemblyPath)" />
  </Target>

Затем передайте значение свойства из события пост-сборки Visual Studio:

msbuild /t:AfterBuild /verbosity:diagnostic /p:AssemblyPath="$(TargetPath)"
...