将ProjectReference添加到不在同一解决方案中的项目

时间:2012-07-22 16:25:13

标签: c# .net visual-studio-2010 visual-studio reference

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

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

例如,我的初始状态是:

解决方案A

  • PROJ A
  • PROJ B

重构后,它看起来像这样:

解决方案A_NEW

  • PROJ A

解决方案B_NEW

  • PROJ B

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

另外,如果有可能,那是推荐吗?

我知道只有手动编辑.csproj文件才能从VS IDE中实现这一点。

3 个答案:

答案 0 :(得分:16)

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

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

更新:由于这个被低估了,我会改进我的答案。

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

答案 1 :(得分:3)

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

如果您没有卸载项目,那么当删除引用的项目时,Visual Studio将自动删除引用。

正如您可能知道的那样,Visual Studios并非旨在实现此目的,您可以更好地定义解决方案的构建顺序并改为使用程序集引用。

答案 2 :(得分:1)

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

希望这有帮助。