我有一个相当大的解决方案,由大约 10 个不同的项目组成。到目前为止,我们已将整个解决方案作为一个整体交付给客户,但我们正在考虑交付我们软件的剥离版本。
为此,我想从解决方案中排除几个项目。我知道您可以阻止在解决方案配置管理器中构建项目。使用宏可以在选择剥离配置时禁用所有代码引用。不幸的是,这不涉及项目引用。我可以根据所选配置使这些参考有条件吗?
我有一个相当大的解决方案,由大约 10 个不同的项目组成。到目前为止,我们已将整个解决方案作为一个整体交付给客户,但我们正在考虑交付我们软件的剥离版本。
为此,我想从解决方案中排除几个项目。我知道您可以阻止在解决方案配置管理器中构建项目。使用宏可以在选择剥离配置时禁用所有代码引用。不幸的是,这不涉及项目引用。我可以根据所选配置使这些参考有条件吗?
使用小脚本从项目文件中删除项目引用应该是一件非常简单的事情 - 这只是删除添加这些引用的行的情况。项目文件格式非常简单。
我怀疑这可能是最简单的解决方案。
您最好的选择是为您的“精简”解决方案创建单独的项目,该解决方案仅引用您想要的其他项目。引用相同的代码。创建一个单独的解决方案来将这些项目结合在一起。
他们也可以一起生活在同一个文件夹结构中。
例如:
我的解决方案/MyProject2/MyClass3.cs
MySolution 引用 MyProject1 和 MyProject2 和 MyProject3
我认为这应该在您构建生产项目时完成。只需将所有需要消失的代码包含在编译器级 IF 之间,该 IF 检查已定义的编译器指令。如果打开,则 IF 和 ENDIF 之间的代码将无法编译。这仅适用于代码文件。
对于您需要取出的任何其他内容,请按照 Jon Skeet 提到的文件格式自行制作。但是一旦你把它放到构建脚本中,你就不需要再关心它了——没有切换配置等。
http://bytes.com/topic/net/answers/444853-conditional-assembly-reference中有很多信息,我发现这些信息对于解决类似问题非常有用(尽管它更多地涉及程序集引用而不是项目引用)。MSBuild 从 ProjectReference 获取程序集参考可能有助于桥接。