我想实现一个执行以下操作的构建后事件
- DLL 输出的相对路径副本(1 个文件,并非所有调试爵士乐)
- A 将输出 DLL 注册到 GAC
这是怎么做到的?
我想实现一个执行以下操作的构建后事件
这是怎么做到的?
你想要吗?
copy $(TargetPath) $(TargetDir)..\..\someFolder\myoutput.dll
regasm $(TargetPath)
(在项目属性下输入构建后步骤的字段)
在“项目属性->构建事件->构建事件后命令行:”中输入以下内容:
xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"
或将以下代码段添加到项目(例如 csproj)文件中
<PropertyGroup>
<PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>
请注意,建议在复制命令参数周围添加“”,以避免包含空格的路径出现问题。另请注意,可以使用 && 组合多个命令
您确定要将此作为编译的一部分吗?如果可以避免的话,我建议在解决方案中使用项目引用而不是 GAC。复制文件是一回事,但在 GAC 中注册相当麻烦,您可能需要考虑编译代码的其他环境。例如其他开发人员的机器、测试环境/构建服务器等。如果您有构建服务器实际上,您应该将 NAnt 之类的东西与某种持续集成服务器一起使用。
我不得不遇到同样的问题,我努力让它发挥作用。
在我的情况下,我想以另一种方式将 SDL dll 复制到我的输出文件夹中。
copy "$(SolutionDir)SDL\lib\x86\SDL.dll" "$(SolutionDir)$(Configuration)\"
请注意,$(Configuration)
将是您的输出文件夹(例如 Debug 或 Release)。
引号是我所缺少的,显然当右侧以 . 结尾时您需要它们\
。因此,始终使用它们可能更安全。
希望为别人节省5分钟!
PS我使用Visual Studio 2010
你可能想看看 MS Build。它是我们在工作中使用的。
对于问题中的第 2 步,我似乎更喜欢以下内容:
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)
注意:这需要在您的开发机器上安装Windows SDK 。
遇到一个相关的问题。这里的答案有帮助(谢谢!)。
我的场景是在调试依赖 MEF 的应用程序时,我需要在特定位置拥有相关的 DLL。我遇到了覆盖先前构建的问题,因此确实需要向脚本添加删除。
delete $(SolutionDir)FileService\$(ProjectName).dll
copy $(TargetPath) $(SolutionDir)FileService\$(ProjectName).dll
希望对某人也有帮助!