2011-04-05 69 views
4

我有一个csproj文件,它是两个不同的Visual Studio解决方案的一部分。该项目文件应该能够表现稍微不同,取决于它将使用的解决方案。我需要的是可用作'条件'的东西 - 一个以例子$(SolutionName)命名的属性 - 以自动填充的方式填充。至少,这是我的想法。我没有发现那样的事情。使用解决方案信息的msbuild脚本

我也认为有两个小项目文件导入公共部分。这可以防止在Visual Studio中编辑所有这些属性,我猜。它只会在活动的“主文件”中写入更改,对吗?

那么,是否有任何其他方式使用解决方案信息在项目级进行区分?

回答

7

原来有一个名为$(SolutionName)的属性。尝试这个;首先设置环境变量:

> set MSBuildEmitSolution=1 

然后,使用的MSBuild从相同的命令行

> MSBuild My.sln 

你会发现你的解决方案文件的MSBuild项目改造,它将被命名为建立自己的解决方案文件My.sln.metaproj

只需在文本编辑器中打开该窗口,即可看到其他属性。检查这个项目文件中的“Build”目标,你可以看到所有这些属性在构建项目时都被传递到MSBuild任务中,所以你应该能够根据它们中的任何一个来区分条件。

+0

metaproj文件包含 Debug MySolutionName。 我使用将我的csproj文件中的开关设置为块。这工作 - 但只适用于'调试'配置。对于'释放'$(SolutionName)似乎是空的,我的子句将被使用。 – Michael 2011-04-05 23:09:40

+0

我在第一条评论中错了。它的工作原理与上述相同。非常感谢,特别是展示了提取这类信息的一般方法。 – Michael 2011-04-05 23:56:29