2

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

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

4

4 回答 4

1

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

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

于 2009-04-21T15:27:02.227 回答
0

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

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

例如:

  • 我的解决方案/我的解决方案.sln
  • MySolution/MyStrippedDownSolution.sln
  • 我的解决方案/MyProject1/MyProject1.csproj
  • MySolution/MyProject1/MyStrippedDownProject1.csproj
  • 我的解决方案/MyProject1/MyClass1.cs
  • 我的解决方案/MyProject2/MyProject2.csproj
  • MySolution/MyProject2/MyStrippedDownProject2.csproj
  • 我的解决方案/MyProject2/MyClass2.cs
  • 我的解决方案/MyProject2/MyProject3.csproj
  • 我的解决方案/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
于 2009-04-21T15:25:36.163 回答
0

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

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

于 2009-04-21T15:37:47.023 回答
0

http://bytes.com/topic/net/answers/444853-conditional-assembly-reference中有很多信息,我发现这些信息对于解决类似问题非常有用(尽管它更多地涉及程序集引用而不是项目引用)。MSBuild 从 ProjectReference 获取程序集参考可能有助于桥接。

于 2009-11-26T14:56:26.753 回答