基于解决方案的条件汇编引用

时间:2009-04-21 15:20:18

标签: c# visual-studio-2008 projects-and-solutions

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

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

他们也可以在同一文件夹结构中共存。

例如:

  • 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

答案 2 :(得分:0)

我认为在构建生产项目时应该这样做。只需将需要在编译器级IF之间消失的所有代码包含在内,以检查已定义的编译器指令。如果选中,则IF和ENDIF之间的代码将无法编译。这仅适用于代码文件。

对于你需要取出的任何其他内容,只需按照文件格式自行构建,如Jon Skeet所述。但是一旦你把它放到构建脚本中,你就不用再关心它了 - 没有切换配置等等。

答案 3 :(得分:0)

http://bytes.com/topic/net/answers/444853-conditional-assembly-reference中有很多信息我发现它对于解决类似问题非常有用(尽管它更多地涉及程序集引用而不是项目引用)。 MSBuild get assembly reference from ProjectReference可能有助于在两者之间架起桥梁。