VS Post Build活动

时间:2008-12-16 13:28:33

标签: visual-studio build post-build-event

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

  1. DLL输出的相对路径副本(1个文件,而不是所有调试爵士乐)
  2. 将输出DLL注册到GAC
  3. 这是怎么做到的?

7 个答案:

答案 0 :(得分:15)

你想要吗?

copy $(TargetPath) $(TargetDir)..\..\someFolder\myoutput.dll
regasm $(TargetPath) 

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

答案 1 :(得分:7)

在“Project properties-> Build events-> Post build events命令行中输入以下内容:”

xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"

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

<PropertyGroup>
    <PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>

请注意,建议在复制命令参数周围添加“”以避免包含空格的路径出现问题。另请注意,可以使用&amp;&amp;

组合多个命令

答案 2 :(得分:5)

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

答案 3 :(得分:2)

我不得不遇到同样的问题而且我努力工作以使其有效。

在我的情况下,我想做其他方式,这是将SDL dll复制到我的输出文件夹中。

copy "$(SolutionDir)SDL\lib\x86\SDL.dll" "$(SolutionDir)$(Configuration)\"

请注意,$(Configuration)将是您的输出文件夹(例如,调试或发布)。

引号是我所遗漏的,显然你需要它们,当右手边有一个\。因此,总是使用它们可能更安全。

希望能在5分钟内拯救别人!

P.S。我使用Visual Studio 2010

答案 4 :(得分:1)

你可能想看看MS Build。这是我们在工作中使用的。

CodeProject Link&amp; MSDN Ref

答案 5 :(得分:1)

对于问题中的第2步,我似乎更喜欢以下内容:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)

注意:这需要在开发计算机上安装Windows SDK

More info on the available macros, such as $(TargetPath), on MSDN.

答案 6 :(得分:0)

进入相关问题。这里的答案有帮助(谢谢!)。

我的方案是调试MEF依赖的应用程序,我需要在特定位置拥有相关的DLL。我遇到了覆盖先前构建的问题,因此需要在脚本中添加删除。

delete $(SolutionDir)FileService\$(ProjectName).dll
copy $(TargetPath) $(SolutionDir)FileService\$(ProjectName).dll

希望对某人有所帮助!