在Visual Studio解决方案文件中有条件地包含项目

时间:2016-01-19 07:08:41

标签: c# msbuild solution csproj

我正在开发一组相互依赖的库,我想生成这些库的几个版本,目标是不同的.NET框架版本。果然,这是一个常见的问题,并且有大量关于如何编写.csproj文件的文档,以便(更频繁地提及)configuration或(恕我直言更适合) platform变量包括目标框架的选择。

所有库都在一个通用的解决方案中。

现在,一些库具有仅在较新的.NET框架版本上可用的外部依赖项。因此,对于旧版本,构建相应的项目毫无意义。

如何根据所选的platform排除某些项目?

我想这个问题的答案必须是这些方法之一,但我找不到有关如何做到这一点的具体信息:

  • 要么,它必须是.sln文件中的一个设置,允许我有条件地从解决方案中排除某些项目。从MSDN docs开始,我不清楚.sln文件中的任何项目是否只能在一组给定的设置处于活动状态时标记为构建。
  • 或者,它可能是.csproj文件中的一个设置,它允许我有条件地禁用编译(不会使编译失败,而是指示当前不应该构建项目)。我的第一个猜测是OutputType setting,但它只允许LibraryExeModuleWinexe;没有诸如None
  • 之类的价值

当然,有针对每个.NET框架版本创建单独的.sln文件的解决方法,但这听起来很麻烦(因此容易出错),因为任何未来的附加库都必须添加到每个.sln文件,因此会有很多重复的解决方案代码和大量的重复工作。

我更喜欢在.sln和/或.csproj文件的源代码中学习如何执行此操作。

0 个答案:

没有答案