【发布时间】:2011-11-24 21:11:21
【问题描述】:
我有一个open source .NET project,它的主要工件是一个DLL,需要将它安装到GAC 以用于其主要用例。因此我想在 AfterBuild 任务期间安装它。我正在使用来自MSBuild Community Extensions 的 GacUtil msbuild 任务。它不工作。
我从here 获得的 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 失败的原因?
【问题讨论】:
-
任何机会 msbuild 或任务没有找到 gacutil?我没有查看 dll 来查看 CE 是否调用 gacutil 本身,或者他们是否编写了自己的实现。这是我们寻找gacutil 的方法,但我相信如果你能让它工作,msbuild 任务会更好。另一个想法是启动进程资源管理器并查看所有文件都被访问了,也许正在发生一些奇怪的事情。
-
。 @billinkc 很好的一般建议,但在这种特定情况下,任务不依赖 v1.4 中的 exe
标签: msbuild msbuildcommunitytasks gacutil