标签: post-build-event

Visual Studio Post Build事件 - 复制到相对目录位置

在成功构建时,我希望将输出目录的内容复制到同一"base"文件夹下的其他位置.此父文件夹是相对部分,可以根据"源代码管理"设置而有所不同.

我列出了一些可供我使用的宏值...

$(SolutionDir)= D:\ GlobalDir\Version\AppName\Solution1\build

$(ProjectDir)= D:\ GlobalDir\Version\AppName\Solution1\Version\ProjectA \

我想将Output Dir内容复制到以下文件夹:

D:\ GlobalDir\Version\AppName\Solution2\Project\Dependency

需要从上述宏之一获取基本位置"D:\ GlobalDir\Version\AppName".但是,没有宏值列出父位置.

如何提取构建后复制命令的基本位置?

post-build-event visual-studio-2008 visual-studio

219
推荐指数
4
解决办法
33万
查看次数

如果不存在,XCOPY切换到创建指定的目录?

我在后期构建事件中使用XCOPY将已编译的DLL从其输出文件夹复制到主应用程序的输出文件夹.DLL被复制到主app输出文件夹中的"Modules"子文件夹,如下所示:

xcopy  "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\" 
Run Code Online (Sandbox Code Playgroud)

如果Modules文件夹存在,该命令可以正常工作,但我在测试期间发现如果文件夹不存在,XCOPY不会创建它,并且命令失败.

是否有一个XCOPY开关,如果该文件夹不存在,将导致该文件夹被创建?如果没有,如果它不存在,我将添加到我的post-build事件中以创建该文件夹?谢谢你的帮助.

xcopy post-build-event

72
推荐指数
5
解决办法
13万
查看次数

Visual Studio:即使项目是最新的,也运行C++项目Post-Build Event

在Visual Studio(2008)中,即使项目是最新的,也可以强制C++项目的Post-Build事件运行?

具体来说,我有一个项目,它构建一个COM进程内服务器DLL.该项目有一个后期构建步骤,运行"regsvr32.exe $(TargetPath)".这在"重建"上运行良好,但只有在对项目源进行了更改时才在"构建"上运行.

如果我在不进行任何更改的情况下执行"构建",Visual Studio只会报告项目是最新的并且什么都不做 - 后期构建事件不会运行.有什么方法可以强制事件在这种情况下运行?这是必要的,因为尽管DLL本身是最新的,但注册信息可能不是.

c++ regsvr32 post-build-event visual-studio

45
推荐指数
2
解决办法
2万
查看次数

我可以使用单个"复制"命令在Windows命令行上复制多个命名文件吗?

我想将几个已知文件复制到另一个目录作为构建后事件的一部分,但不希望在我的构建事件中有"copy [file] [destination] [switches]"的行和行.如果可能的话,我想列出我想用类似格式复制的文件:"copy [file 1] [file 2] [file 3] [etc ...] [destination] [switches]" .但是,Windows似乎不喜欢这种类型的格式.有任何想法吗?谢谢!

windows command-line post-build-event

37
推荐指数
2
解决办法
8万
查看次数

如何使用xcopy只复制文件?

我在Visual Studio解决方案中有许多Web应用程序.

所有都有相同的post build命令:

xcopy "$(TargetDir)*.dll" "D:\Project\bin" /i /d /y
Run Code Online (Sandbox Code Playgroud)

避免用旧文件替换较新的文件会很有用(例如,有人可能会意外添加对旧版DLL的引用).

如何使用xcopy仅使用Visual Studio生成的较新DLL文件替换旧文件?

xcopy post-build-event visual-studio

26
推荐指数
2
解决办法
3万
查看次数

将目标文件复制到CMake中的后期构建步骤中的另一个位置

我有一个动态库,根据配置获取不同的名称,在CMake脚本中指定:

set_target_properties(${name} PROPERTIES OUTPUT_NAME ${outputName}64)
set_target_properties(${name} PROPERTIES DEBUG_OUTPUT_NAME ${outputName}64_d)
Run Code Online (Sandbox Code Playgroud)

最终结果是我在发布和调试版本上获得了不同的名称.我想将生成的库复制到另一个目录作为构建后的步骤,但是CMake-Fu的礼物(?)并没有真正对你微笑.

我试过这样做:

GET_TARGET_PROPERTY(origfile mylibrary LOCATION)
STRING(REGEX REPLACE "/" "\\\\" origfile ${origfile})

set(targetfile my_target_path\\${CMAKE_CFG_INTDIR}\\)
STRING(REGEX REPLACE "/" "\\\\" targetfile ${targetfile})

add_custom_command(TARGET mylibrary POST_BUILD
    COMMAND copy ${origfile} ${targetfile}
)
Run Code Online (Sandbox Code Playgroud)

这适用于发布版本,但是对于调试,源代码不包括我期望的_d. 如何获取目标的输出路径以便我可以复制文件?

注意:从上面的代码片段可以看出,这是目前用于Windows/Visual Studio的,但我希望这也适用于OS X/Xcode/make.

注意:我需要将库放在一个额外的目录中,该目录充当依赖于此库的其他几个项目的输出目录,以便这些项目能够在运行时加载库.可接受的替代解决方案是能够创建执行复制的自定义目标,以便其他项目可以依赖于此项目,而该项目又依赖于库.

xcode cmake post-build-event visual-studio

26
推荐指数
3
解决办法
3万
查看次数

如何在我的构建后事件中修复MSB3073错误?

我正在开发一个项目,要求通过构建我的解决方案生成的DLL从bin文件夹复制到另一个文件夹,这两个文件夹都在我的机器上,在我的C盘中.我编写了一个使用xcopy来完成此任务的批处理文件,您可以在此处看到:

xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.dll" "C:\inetpub\wwwroot\AppServer\bin\"
xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.pdb" "C:\inetpub\wwwroot\AppServer\bin\"
Run Code Online (Sandbox Code Playgroud)

现在,我尝试了这个文件的多次迭代,它位于:

C:\Users\scogan\Desktop\CopyFiles.bat
Run Code Online (Sandbox Code Playgroud)

所以我的post-build事件命令行如下所示:

call C:\Users\scogan\Desktop\CopyFiles.bat
Run Code Online (Sandbox Code Playgroud)

我自己运行这个批处理文件,桌面上的文件夹中有两个文本文件,它运行正常.我也运行它,因为我需要自己复制的文件,这也很好.但是,当我尝试将其作为后期构建事件运行时,我得到此输出:

1>  Organizr -> C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Client\bin\Debug\Organizr.exe
1>  File not found - Organizr.Services.dll
1>  0 File(s) copied
1>  0 File(s) copied
1>  File not found - Organizr.Services.pdb
1>c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4291,5): error MSB3073: The command "call C:\Users\scogan\Desktop\CopyFiles.bat" exited with code 4.
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现错误代码4意味着"发生了初始化错误.没有足够的内存或磁盘空间,或者您在命令行上输入了无效的驱动器名称或无效的语法."

我也查了一下MSB3073是什么,并没有真正找到可以帮助我的东西.所以,我的问题是我做错了什么?绝对路径是否会搞砸?任何帮助在这里表示赞赏.

msbuild post-build-event visual-studio-2012

25
推荐指数
5
解决办法
15万
查看次数

VS PostBuild事件 - 复制文件(如果存在)

是否有一种简单的方法可以在Visual Studio项目的后期构建事件中复制文件,但前提是文件存在?(即如果文件不存在,请不要使构建失败)

我尝试过使用xcopy的一些选项.但我觉得很蠢 - 我似乎无法理解xcopy可能需要的开关.

post-build-event visual-studio

22
推荐指数
2
解决办法
2万
查看次数

延迟构建后的Jenkins工作

我有一个Jenkins工作,它将我们的Java项目编译并发布到JBoss服务器.显然,服务器需要时间来启动和部署新代码.我有第二个Jenkins作业,它针对正在运行的JBoss实例运行Selenium测试.

我想让第二个(Selenium)工作作为第一个工作的后期构建动作自动执行(我已经完成了这个),但是我希望它延迟2分钟.延迟时间的数量并不重要,但我无法找到描述如何延迟构建后作业的开始的任何地方.我怎么做到这一点?

post-build-event jenkins

21
推荐指数
1
解决办法
1万
查看次数

如何在VS 2012中的Web部署发布任务之前执行PowerShell脚本?

目前,我使用Visual Studio 2012在我的Web项目中配置了一个构建后事件,如下所示:

在此输入图像描述

这基本上调用PowerShell脚本向每个.cs文件添加版权声明.

我想要做的是仅在将Web应用程序发布到远程服务器之前执行此PowerShell脚本.这样做我每次需要调试项目时都不会遇到延迟.你知道有什么方法可以实现吗?


根据Sayed的回答,我定制了一个特定的发布配置文件并添加了这个:

<PipelineDependsOn>
  CustomBeforePublish;
  $(PipelineDependsOn);
</PipelineDependsOn>
</PropertyGroup>
<Target Name="CustomBeforePublish">
<Message Text="******* CustomBeforePublish *******" Importance="high" />
<Exec Command="powershell.exe -file &quot;$(ProjectDir)\Copyright.ps1&quot;" />
</Target>
Run Code Online (Sandbox Code Playgroud)

powershell publish msdeploy post-build-event visual-studio-2012

19
推荐指数
2
解决办法
7761
查看次数