【发布时间】:2009-05-18 22:05:15
【问题描述】:
我想创建一个构建后脚本,将生成的 pdb 复制到 gac 文件夹中,如下所示:复制 $(TargetDir)$(TargetName).pdb C:\Windows\assembly\GAC_MSIL\$(TargetName)\?公共令牌?但是我需要当前构建项目的公共令牌,有没有办法得到这个?
【问题讨论】:
标签: msbuild
我想创建一个构建后脚本,将生成的 pdb 复制到 gac 文件夹中,如下所示:复制 $(TargetDir)$(TargetName).pdb C:\Windows\assembly\GAC_MSIL\$(TargetName)\?公共令牌?但是我需要当前构建项目的公共令牌,有没有办法得到这个?
【问题讨论】:
标签: msbuild
根据您的问题,我认为您正在寻找可以从 Visual Studio 快速添加到构建后事件的内容。如果使用XCOPY,则可以在目标路径中指定通配符。这对你来说可能就足够了:
XCOPY "$(TargetDir)$(TargetName).pdb" "%WINDIR%\Assembly\GAC_MSIL\$(TargetName)\*\"
另一种选择是尝试使用框架提供的SN.exe 提取公钥令牌。这可能看起来像:
FOR /F "usebackq tokens=5" %%T in (`sn.exe -q -T "$(TargetDir)$(TargetName).dll"`) DO COPY ""$(TargetDir)$(TargetName).pdb" "%WINDIR%\Assembly\GAC_MSIL\$(TargetName)\%%T\"
但实际上,目标目录不包括程序集版本以及公钥令牌吗?
最后,您可以随时下载MSBuildExtensions 库,其中包含一个Assembly 任务(或自己实现一个自定义任务)。但是,在这种情况下,您需要手动编辑您的 proj 文件。
另外,请查看blog entry - 您可能会感兴趣。
【讨论】: