在一次成功的构建中,我希望将输出目录的内容复制到同一“base”文件夹下的不同位置。这个父文件夹是一个相对的部分,可以根据源代码控制设置而变化。
我列出了一些对我有用的宏值…
$(SolutionDir) = D:\GlobalDir\Version\AppName\Solution1\build
$(ProjectDir) = D:\GlobalDir\Version\AppName\Solution1\Version\ProjectA\
我想复制输出目录的内容到以下文件夹:
D: \ GlobalDir \ \版本浏览器名称\ \ Solution2 \项目依赖
基本位置“D:\GlobalDir\Version\AppName”需要从上述宏之一获取。但是,没有一个宏值只列出父位置。
如何仅提取生成后副本命令的基本位置?
我认为这是相关的,但我有一个问题,当直接使用msbuild命令行(从批处理文件)构建vs从vs内部构建。
使用如下内容:
<PostBuildEvent>
MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>
(注意:启动XCOPY而不是XCOPY用来绕过阻止复制的权限问题)
宏$(SolutionDir)计算为..\当从批处理文件执行msbuild时,导致XCOPY命令失败。在Visual Studio中构建时,它工作得很好。Confirmed using /verbosity:诊断性地查看评估的输出。
使用宏$(ProjectDir)..\相反,这相当于同样的事情,工作得很好,并在两个构建场景中保留了完整的路径。