Visual studio 2008 如何处理VS解决方案中的依赖性混乱?

Visual studio 2008 如何处理VS解决方案中的依赖性混乱?,visual-studio-2008,dependencies,Visual Studio 2008,Dependencies,我有一个大约70个项目的解决方案,它们之间有很多依赖关系(我实际上做了一个图,它有大约300条边)。我知道有些依赖项是不必要的。我希望在构建时使用多个核心,我想这些不必要的依赖可能会影响构建的并行性 基本上,我想找出构建程序需要哪些依赖项,哪些依赖项可以删除。我只关心能够构建软件,而不是运行它。有没有办法自动找到答案 项目是C++、C++、CLI和C语言。有些依赖项是手动指定的(使用VS中的“项目依赖项”窗口),有些是作为托管程序集引用提供的(可能不需要),有些是作为静态/动态链接库提供的(也可

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

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

项目是C++、C++、CLI和C语言。有些依赖项是手动指定的(使用VS中的“项目依赖项”窗口),有些是作为托管程序集引用提供的(可能不需要),有些是作为静态/动态链接库提供的(也可能不需要)。

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

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

C++要困难得多,因为构建工具可以生成.lib以外的文件。与类型库类似,由IDL创建并由托管代码使用。或IDL中的.h文件。或.rc文件中的.res文件。也有可能存在一种尚未发现的依赖关系。当你使用一台有很多内核的机器时,会破坏构建

通过使用/VERBOSE选项分析链接器的输出,可以确定是使用static还是import.lib。使用.lib中的符号时,(大)输出中将有一行。通过颠倒.sln文件中项目的顺序并执行干净的构建(强制只使用一个CPU),清除缺少的项目依赖项