【问题标题】:How to deal with dependency mess inside a VS solution?如何处理 VS 解决方案中的依赖混乱?
【发布时间】:2010-09-10 00:32:49
【问题描述】:

我有一个包含大约 70 个项目的解决方案,它们之间有很多依赖关系(我实际上做了一个图表,它有大约 300 个边)。我知道某些依赖项是不必要的。我希望它在构建时使用多个内核,我猜这些不必要的依赖可能会影响构建的并行度。

基本上我想找出构建程序所必需的依赖项,以及可以删除哪些依赖项。我只关心能够构建软件,而不是运行它。有没有办法自动找出来?

项目是 C++、C++/CLI 和 C#。一些依赖项是手动指定的(使用 VS 中的 Project Dependencies 窗口),一些作为托管程序集引用提供(这可能不是必需的),一些作为静态/动态链接库提供(这也可能不是必需的)。

【问题讨论】:

    标签: visual-studio-2008 dependencies


    【解决方案1】:

    对于 C# 项目,您可以使用 Ildasm.exe。查看 .assembly 指令的清单。 C# 编译器会自动删除未使用的那些。如果您在项目的 References 节点中看到没有匹配 .assembly 指令的引用,则可以将其删除。

    不确定 C++/CLI 编译器是否也这样做。试试看。

    C++ 要困难得多,因为构建工具可以生成超出 .lib 的文件。就像一个类型库,从 IDL 创建并由托管代码使用。或者来自 IDL 的 .h 文件。或 .rc 文件中的 .res 文件。也可能存在尚未发现的依赖关系。当您使用具有大量内核的机器时会破坏构建的那种。

    您可以通过使用 /VERBOSE 选项分析链接器的输出来确定是否使用了静态或导入 .lib。当它使用 .lib 中的符号时,(大)输出中将有一行。通过颠倒 .sln 文件中项目的顺序并进行干净的构建来清除缺失的项目依赖项,强制只使用一个 CPU。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多