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

lys*_*cid 17 .net c# reference visual-studio-2010 visual-studio

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

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

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

解决方案A.

  • PROJ A.
  • PROJ B

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

解决方案A_NEW

  • PROJ A.

解决方案B_NEW

  • PROJ B

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

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

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

les*_*ode 17

你不能这样做.甲项目引用包括用于引用的项目,其被保持在溶液中的文件,以便跟踪溶液构建选项和依赖关系的识别GUID.如果您尝试引用不在解决方案中的项目,Visual Studio将会抱怨.

您可以添加文件引用组装一个项目,这不是在解决方案,当然生产.

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

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


小智 5

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

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

您可能会说,Visual Studio并非旨在执行此操作,因此最好为解决方案定义构建顺序,而改用程序集引用。