MSBuild 社区任务 GacUtil 默默地为我失败

标签 msbuild msbuildcommunitytasks gacutil

我有一个 open source .NET project其主要人工制品是一个 DLL,需要将其安装到 GAC 以用于其主要用例。因此我想在 AfterBuild 任务期间安装它。我正在使用 MSBuild Community Extensions 中的 GacUtil msbuild 任务.它不工作。

我的 MSBuild 代码,来自 here是:

<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 失败的原因?

最佳答案

看起来它试图用来获取工具的路径是错误的(或者至少在我的情况下是这样)。将“GacUtil”任务上的“ToolPath”属性设置为“$(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>

关于MSBuild 社区任务 GacUtil 默默地为我失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549936/

相关文章:

msbuild - 当给定相对路径时,如何让 MSBUILD 评估并打印完整路径?

c# - 发布 MVC 4 应用程序时出现 PathTooLongException。指定的路径、文件名或两者都太长

C# 项目 (.CSProj),链接到具有平面目录结构的文件

xml - 如何最好地更新 MSBuild 中的 XML 节点

.net - Gacutil.exe 成功添加程序集,但程序集在资源管理器中不可见。为什么?

c# - 从命令行发布 WPF 项目

iis-7 - 如何使用 MSBuild Extension Pack 创建带有应用程序的网站

.net - .NET Core 版本的 MSBuild 不支持任务工厂 "CodeTaskFactory"

visual-studio-2010 - 在每个构建上安装 GAC - 如何可靠地安装

visual-studio-2010 - gacutil postbuild事件存在,代码为1