繁体   English   中英

基于解决方案的条件程序集引用

[英]conditional assembly references based on solution

我有一个相当大的解决方案,包含大约10个不同的项目。 到目前为止,我们已经将整个解决方案作为整体交付给客户,但是我们正在考虑交付软件的简化版本。

为此,我想从解决方案中排除几个项目。 我知道您可以防止在解决方案配置管理器中构建项目。 当选择剥离配置时,可以使用宏禁用所有代码引用。 不幸的是,这并不涉及项目参考。 我可以根据所选择的配置使这些引用有条件吗?

使用小脚本从项目文件中删除项目引用应该很简单-这只是删除添加这些引用的行的一种情况。 项目文件格式非常简单。

我怀疑这可能是最简单的解决方案。

http://bytes.com/topic/net/answers/444853-conditional-assembly-reference中有很多信息,我发现它对于解决类似问题非常有用(尽管它比项目参考更重要于装配参考)。 MSBuild从ProjectReference获取程序集参考可能有助于在两者之间架桥。

最好的选择是为“精简”的解决方案创建单独的项目,该项目仅引用您想要的其他项目。 引用相同的代码。 创建一个单独的解决方案以将这些项目结合在一起。

它们也可以一起生活在同一文件夹结构中。

例如:

  • MySolution / MySolution.sln
  • MySolution / MyStrippedDownSolution.sln
  • MySolution / MyProject1 / MyProject1.csproj
  • MySolution / MyProject1 / MyStrippedDownProject1.csproj
  • MySolution / MyProject1 / MyClass1.cs
  • MySolution / MyProject2 / MyProject2.csproj
  • MySolution / MyProject2 / MyStrippedDownProject2.csproj
  • MySolution / MyProject2 / MyClass2.cs
  • MySolution / MyProject2 / MyProject3.csproj
  • MySolution / MyProject2 / MyClass3.cs

    • MyProject1和MyStrippedDownProject1参考MyClass1
    • MyProject2和MyStrippedDownProject2参考MyClass2
    • MyProject3和MyStrippedDownProject3参考MyClass3
  • MySolution引用MyProject1和MyProject2和MyProject3

  • MyStrippedDownSolution引用MyStrippedDownProject1和MyStrippedDownProject2
  • MyProject1引用MyProject2和MyProject3
  • MyStrippedDownProject1仅引用MyStrippedDownProject2-不引用-MyProject3

我认为应该在构建用于生产的项目时完成。 只需将需要消失的所有代码放在编译器级IF之间,即可检查已定义的编译器指令。 如果启用,则IF和ENDIF之间的代码将无法编译。 这仅适用于代码文件。

正如Jon Skeet所述,对于其他需要删除的内容,只需根据文件格式自行调整即可。 但是,一旦将其放入构建脚本中,就不必再在乎它了-无需切换配置,等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM