VS Post Build活动

Mic*_*l L 9 build post-build-event visual-studio

我想实现一个执行以下操作的post build事件

  1. DLL输出的相对路径副本(1个文件,而不是所有调试jazz)
  2. 将输出DLL注册到GAC

这是怎么做到的?

Dir*_*mar 15

你想要那吗?

copy $(TargetPath) $(TargetDir)..\..\someFolder\myoutput.dll
regasm $(TargetPath) 
Run Code Online (Sandbox Code Playgroud)

(进入项目属性下的后期构建步骤的字段)

  • 在Microsoft Visual Studio 2010中,这将失败,9009错误:你需要使用的完整路径regasm,如下所示:C:\ WINDOWS\Microsoft.NET\Framework64\v4.0.30319\regasm.exe $(TARGETPATH) (7认同)

aku*_*aku 7

在"项目属性 - >构建事件 - >后期构建事件命令行"中输入以下内容:

xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"
Run Code Online (Sandbox Code Playgroud)

或者将以下代码段添加到项目(例如csproj)文件中

<PropertyGroup>
    <PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

请注意,建议在复制命令参数周围添加""以避免包含空格的路径出现问题.另请注意,可以使用&&组合多个命令


Nei*_*ell 5

您确定要在编译过程中执行此操作吗?如果可以避免,我建议在解决方案而不是GAC中使用项目引用.复制文件是一回事,但在GAC中注册是相当具有侵入性的,您可能需要考虑编译代码的其他环境.像其他开发人员的机器,测试环境/构建服务器等等.如果您有构建服务器你真的应该使用NAnt这样的东西和某种持续集成服务器.