【发布时间】:2018-10-01 13:55:00
【问题描述】:
而不是构建到默认的文件夹结构,就像
Solution.sln
Project1
bin <- project 1 output
obj <- project 1 intermediate output
Project2
bin <- project 2 output
obj <- project 2 intermediate output
我想像这样构建它
Solution.sln
bin <- project 1 AND 2 output
obj
Project1 <- project 1 intermediate output
Project2 <- project 2 intermediate output
我可以的
msbuild "/p:OutputPath=../bin" "/p:IntermediateOutputPath=../obj/" Test123.sln
但是,使用"/p:IntermediateOutputPath=../obj/$(ProjectName)/" 不起作用。它不是为每个项目创建一个文件夹,而是创建一个字面上称为 $(ProjectName) 的文件夹(我读过大部分,但并非所有这些宏实际上都是 Visual Studio 的东西,而不是 MSBuild 魔术)。
构建时如何在属性值(例如IntermediateOutputPath)中使用项目特定值(例如ProjectName)?
(一些背景资料:
在解决方案级别拥有一个bin 文件夹可以节省不必要的输出文件复制,在大型解决方案中这些文件很快就会累积超过 100 MB。此外,它还可以保持源文件夹的清洁,因此它们可以是只读的。
我仍然想要单独的 obj 文件夹,因为谁知道里面有什么 - 不同项目的文件名可能相同。)
【问题讨论】:
-
我怀疑您是否可以直接从命令行执行此操作而无需修改项目文件。但是,您的实际问题并不清楚:您是否只希望该单个 bin 目录用于命令行构建?还是总是? wrt 我读的最多,但并非所有这些宏实际上都是 Visual Studio 的东西,而不是 msbuild 魔术:不知道你从哪里得到的,但事实并非如此。您的问题似乎是
$(ProjectName)作为文字字符串传递,并且不会被 msbuild 解释