我有一个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.我从路径为gacutil.exe的管理员身份运行的cmd.exe副本中执行此命令。我使用同样的命令提示符从GAC成功地安装和卸载了此程序集,并仔细检查了该程序集不在c:\windows\assembly文件夹中。
我如何找出GacUtil失败的原因?
发布于 2011-10-05 16:36:44
看起来它试图用来访问工具的路径是错误的(至少在我的例子中是这样)。将"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>发布于 2011-10-03 23:20:37
您是否使用Message任务验证了$(TargetName)的值?
您可能需要在build.proj文件中指定一个属性:
<PropertyGroup>
<AssemblyPath></AssemblyPath>
</PropertyGroup>
<Target Name="AfterBuild">
<GacUtil Assemblies="$(AssemblyPath)" />
</Target>然后从Visual Studio生成后事件传入属性值:
msbuild /t:AfterBuild /verbosity:diagnostic /p:AssemblyPath="$(TargetPath)"https://stackoverflow.com/questions/7549936
复制相似问题