我想实现一个执行以下操作的构建后事件

  1. DLL 输出的相对路径副本(1 个文件,不是所有调试 jazz)
  2. 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) 将是您的输出文件夹(例如调试或发布)。

引号是我所缺少的,显然当右手边以 \. 。因此,始终使用它们可能会更安全。

希望能为别人节省5分钟!

附:我使用 Visual Studio 2010

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

代码项目链接 & MSDN 参考

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

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

笔记:这需要 视窗软件开发工具包 安装在您的开发机器上。

有关可用宏的更多信息,例如 MSDN 上的 $(TargetPath)。

遇到了一个相关问题。这里的答案有帮助(谢谢!)。

我的场景是在调试依赖 MEF 的应用程序时,我需要将相关 DLL 放在特定位置。我遇到了覆盖先前构建的问题,因此确实需要向脚本添加删除。

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

希望对某人也有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top