Visual Studio发布构build事件 – 复制到相对目录位置
在成功构build时,我希望将输出目录的内容复制到同一个“基本”文件夹下的不同位置。 这个父文件夹是一个相对的部分,可以根据源代码pipe理设置而有所不同。
我列出了一些可用于我的macros值…
$(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”需要从上面的macros中获取。 但是,没有一个macros值只列出父级位置。
我如何只提取后构build复制命令的基地址?
如果没有TargetDir或其他macros指向正确的位置,请使用“..”目录向后翻转文件夹层次结构。
即。 使用$(SolutionDir)\..\..
来获取您的基础目录。
有关所有macros的列表,请参阅此处:
这是你想要在项目的后生成事件命令行中的内容:
copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
编辑:或者如果您的目标名称是不同于项目名称。
copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"
你可以尝试:
$(SolutionDir)\..\..\
我认为这是相关的,但直接使用msbuild
命令行(从一个batch file)vs从VS内build设时,我有一个问题。
使用以下内容:
<PostBuildEvent> MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1" start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\" </PostBuildEvent>
(注意: start XCOPY
而不是XCOPY
用来解决阻止复制的权限问题)
从batch file执行msbuild时,macros$(SolutionDir)
评估为..\
,导致XCOPY
命令失败。 在Visual Studio中构build它时,它可以很好地工作。 确认使用/verbosity:diagnostic
来查看评估输出。
使用macros$(ProjectDir)..\
代替相同的东西,工作正常,并保留两个构buildscheme的完整path。
直接使用msbuild是没有意义的吗? 如果你正在做每一个构build,那么你可以在最后添加一个msbuild任务? 如果您只想查看是否找不到在Visual Studio IDE上未显示的另一个macros值,则可以将msbuild选项切换到诊断,并将显示您可以使用的所有variables,如以及他们现在的价值。
要在Visual Studio中打开它,请转到工具/选项,然后向下滚动树形视图到项目和解决scheme部分,展开它,然后单击构build并运行,在右侧它们是一个下拉列表,指定构build输出的详细程度,将其设置为诊断,将显示您可以使用的其他macros值。
因为我不太清楚你想要达到什么样的水平,以及你希望自己的构build有多复杂,这可能会给你一些想法。 我最近一直在做构build脚本,甚至执行SQL代码作为构build的一部分。 如果你需要更多的帮助,甚至是一些示例生成脚本,请告诉我,但是如果这只是一个小的过程,你想在构build结束时运行,那么可能是完整的msbuild脚本有点过分杀死。
希望对Rihan有帮助