Visual studio Visual Studio生成后事件-复制到相对目录位置
成功构建后,我希望将输出目录的内容复制到同一“base”文件夹下的不同位置。此父文件夹是一个相对部分,可以根据源代码管理设置而有所不同 我已经列出了一些可用的宏值 $(SolutionDir)=D:\GlobalDir\Version\AppName\Solution1\build $(ProjectDir)=D:\GlobalDir\Version\AppName\Solution1\Version\ProjectA\ 我想将输出目录内容复制到以下文件夹: D:\GlobalDir\Version\AppName\Solution2\Project\Dependency 基本位置“D:\GlobalDir\Version\AppName”需要从上述宏之一获取。但是,没有一个宏值仅列出父位置 如何仅提取生成后复制命令的基本位置?您可以尝试:Visual studio Visual Studio生成后事件-复制到相对目录位置,visual-studio,visual-studio-2008,post-build-event,Visual Studio,Visual Studio 2008,Post Build Event,成功构建后,我希望将输出目录的内容复制到同一“base”文件夹下的不同位置。此父文件夹是一个相对部分,可以根据源代码管理设置而有所不同 我已经列出了一些可用的宏值 $(SolutionDir)=D:\GlobalDir\Version\AppName\Solution1\build $(ProjectDir)=D:\GlobalDir\Version\AppName\Solution1\Version\ProjectA\ 我想将输出目录内容复制到以下文件夹: D:\GlobalDir\Versi
$(SolutionDir)..\..\
如果TargetDir或其他宏都没有指向正确的位置,请使用“.”目录在文件夹层次结构中向后移动 也就是说,使用
$(SolutionDir)\..\\
获取基本目录
有关所有宏的列表,请参见此处:
直接使用msbuild没有意义吗?如果对每个生成都执行此操作,则可以在末尾添加msbuild任务?如果只想查看是否找不到Visual Studio IDE上未显示的另一个宏值,可以将msbuild选项切换到diagnostic,该选项将显示可以使用的所有变量及其当前值 若要在visual studio中启用此功能,请转到“工具/选项”,然后向下滚动树状视图到名为“项目和解决方案”的部分,展开该部分,然后单击“生成并运行”,右侧是一个下拉列表,指定生成输出详细程度,将其设置为“诊断”,将显示可以使用的其他宏值 因为我不太清楚您希望达到什么级别,以及您希望构建有多复杂,这可能会给您一些想法。我最近一直在编写构建脚本,甚至在构建过程中执行SQL代码。如果您希望获得更多帮助,甚至需要一些示例生成脚本,请告诉我,但是如果您只是希望在生成结束时运行一个小进程,那么使用完整的msbuild脚本可能有点过分 希望能有帮助
Rihan以下是您希望在项目的构建后事件命令行中输入的内容:
copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
编辑:或者如果目标名称与项目名称不同
copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"
我认为这是相关的,但是当直接使用
msbuild
命令行(从批处理文件)构建与从内部构建vs
使用类似以下内容:
<PostBuildEvent>
MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>
移动/Y“$(TargetDir)something.file1”“$(ProjectDir)something.file1”
启动XCOPY/Y/R“$(SolutionDir)SomeConsoleApp\bin\$(配置名称)\*”$(ProjectDir)应用程序\u数据\Consoles\SomeConsoleApp\”
(注意:start XCOPY
而不是XCOPY
用于绕过阻止复制的权限问题)
从批处理文件执行msbuild时,宏$(SolutionDir)
的计算结果为。\
,这导致XCOPY
命令失败。在VisualStudio中构建时,它运行良好。使用/verbosity:diagnostic
查看评估的输出进行确认
相反,使用宏
$(ProjectDir)\
,这相当于一件事,在两种构建场景中运行良好并保留了完整路径。thx Rihan,但显然VS 2003似乎不支持这一点!当然,我对后期构建事件非常满意;-)我没有意识到它是vs2003,因此使用msbuild作为可能的解决方案,如果我记得vs2003是在msbuild时代之前的话?谢谢你的回复。祝VS 2003好运,在转到VS2005Good tip之后,我没有回头看。我忘了引号。它对我不起作用,因为我忘了/Y
。感谢您展示整个命令。您可以使用带有通配符和适当开关的xcopy
来实现类似的结果,同时保持源文件夹的(树)结构,例如:xcopy/i/e/s/y/f“\MyFolder\*”\MyFolder”
我建议使用$(TargetName)而不是$(ProjectName)在source-part.update中,更新到我的上一个版本。注释:copy/Y“$(TargetPath)”“$(SolutionDir)某处\“
,没有额外的反斜杠,因为$(SolutionDir)包含一个尾随反斜杠(至少在VS2012中)交叉链接到,以防我忘了给学分…Start
对我有效(对于共享文件夹中的xcopy
)。请记住,变量$(SolutionDir)已经有反斜杠。Source:“解决方案的目录(用驱动器和路径定义);包括后面的反斜杠“\”。谢谢!!提示得好