[英]VS Post Build Event
我想实现一个执行以下操作的构建后事件
这是怎么做到的?
你想要那吗?
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
希望能帮助别人!
这个问题很老了。 最简单的方法是在 your.csproj 文件中添加类似的内容。 例如,我正在虚拟机上运行一些测试,并且很高兴在编译后将其发送给它:
<Project>
...
<!-- Upload to virtual machine -->
<Target Name="rsync" AfterTargets="Build">
<Exec Command="C:\Windows\System32\wsl.exe rsync -azv -e 'ssh -i /path/to/my/private/key' --delete /mnt/c/repos/MyProject/bin/Debug/net7.0/ root@vm.ublux.com:/usr/share/foo/" />
</Target>
</Project>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.