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

freeliver54 阅读:18 2024-02-06 11:00:25 评论:0

我有一个 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> 


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号