24

在对我们的项目和解决方案文件进行一些重构时,我已经分离了一些 .sln 文件以包含更少的项目。

有时我需要引用当前 .sln 文件范围之外的一些项目。

例如,我的初始状态是这样的:

解决方案 A

  • 项目 A
  • 项目 B

重构后它看起来像这样:

解决方案 A_新

  • 项目 A

解决方案 B_新

  • 项目 B

我的问题是——是否可以将ProjectReference节点添加到未在同一 VS 解决方案中定义的项目中?(在我的情况下,让PROJ A有一个对PROJ B的项目引用)。

另外,如果可以的话,推荐吗?

我知道这在 VS IDE 中是不可能的,只能通过手动编辑 .csproj 文件。

4

3 回答 3

24

你不能这样做。项目引用包括被引用项目的标识 GUID,它在解决方案文件中维护,以便跟踪解决方案构建选项和依赖关系。如果您尝试引用不在解决方案中的项目,Visual Studio 会报错。

当然,您可以将文件引用添加到由不在解决方案中的项目生成的程序集。

更新:由于这被否决了,我会完善我的答案。

尽管在技术上可以制作引用同一解决方案之外的另一个项目的项目文件,但 Visual Studio 无法帮助您轻松完成。这样做是一个坏主意的一个很好的理由(我已经观察到)是,如果 MSBuild 决定构建引用的项目(默认配置),那么您正在构建的任何解决方案配置和平台(引用项目)都将被忽略并且将使用在该引用项目文件中指定的平台。因此,您最终可能会在不同文件夹中混合使用二进制类型。

于 2012-07-22T17:07:24.250 回答
8

暂时将项目添加到解决方案中,添加对它的引用,卸载现在添加了引用的项目,删除引用的项目,重新加载带有引用的项目。

如果您不卸载项目,则在删除引用的项目时,Visual Studio 将自动删除该引用。

正如您可能知道的那样,Visual Studios 不是为此而设计的,您最好为解决方案定义构建顺序并改用程序集引用。

于 2015-11-08T17:46:02.100 回答
1

绝对可以将项目添加到解决方案A中的解决方案中B。没有任何问题。根据我的经验,这不是我通常做过或做过的事情,但有时需要。在您需要架构的不同节点来重用相同代码库的大型项目中尤其如此。

希望这可以帮助。

于 2012-07-22T16:34:23.140 回答