VS 解决方案文件中 ProjectDependencies 的用途是什么

what´s the purpose of ProjectDependencies in VS-solution-file

我读过 this post on the contents of a solution file,但仍然不知道在解决方案文件中而不是在项目文件本身中提供的依赖项的实际目的。

根据项目 1,项目 2 似乎有两种方式:

  1. 添加一个从 p2 到 p1 的项目引用。这将通过将 ProjectReference 引入 p1.csproj 来更改 p2 的 csproj 文件,但据我所知不会更改解决方案。
  2. 添加一个从 p2 到 p1 的程序集引用。 Thill 还将通过对已编译程序集 (dll) 使用 Reference 来更改 csproj 文件。但是,它 在解决方案文件中添加了一个 ProectDependency ,我不明白。为什么在这种情况下需要解决方案中的第二个条目? p2 的 csproj 文件中提供的程序集引用是否足够?

这纯粹是历史。新的项目文件实际上不再需要它了,但是 .sln 文件格式早于 msbuild,因此解决方案文件有一些重复。

它用于定义构建顺序,当您的解决方案中有古老的项目类型时,这一点变得更加重要,因为这些将无法声明构建顺序。它还用于声明和验证不相关项目(例如,不相互引用的项目)之间的构建顺序,而 IDE 不必加载和解析所有项目。

您的第二种情况是解决方案文件跟踪生成顺序的情况之一。然后它知道它需要在 P2 之前构建 P1。如果没有解决方案级别参考,信息将会丢失。很聪明,这是自动检测和添加的,过去你需要手动定义这样的构建顺序依赖关系。

在编译时,.sln 被转换为 msbuild 文件,然后编排构建。 (参见 an example here). You can set an environment variable to generate yours

解决方案文件是古老的,并且有一些从 pre msbuild 遗留下来的人工制品。有些东西只需要 'reasons'.

如果他们要从头开始构建 VS,解决方案文件看起来会大不相同。