我想实现一个执行以下操作的post build事件
这是怎么做到的?
答案 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
希望对某人有所帮助!