能否从一个共享项目中引用另一个共享项目?

4
我正在查看Visual Studio 2013中的新共享项目功能。这是一个相当不错的功能,但是我如何在“更高级别”的共享项目中使用“基础”共享项目中的代码?似乎共享项目中缺少引用功能...... ???
如何构建大型实际业务应用程序而无法将代码分离到多个项目中?
更新:我觉得我没有表达清楚:
假设您想为Windows平台开发通用应用程序,并使用xamarin支持iOS和Android。因此,将特定于平台的代码放入特定于平台的项目中,在共享库中定义接口,并通过依赖注入将特定于平台的代码传递给共享代码,并从特定于平台的项目引用所有特定于平台的库。
到目前为止还不错...
但是为了使特定于平台的代码保持较小,您需要在共享项目中开发业务逻辑和基本框架。
现在您有第二个客户。当然,您希望再次重用基本框架,并仅构建新的业务和UI层。
现在我想在两个项目中都使用相同的框架层。
如果共享项目之间不允许引用,该怎么办?
(链接文件不是可行的选项,因为我的项目中普通解决方案有大约1000个或更多文件,因此您永远无法跟踪必须在所有解决方案中链接的所有文件。/ ilMerge也不可行-它不能合并WPF项目,也无法用于Android和iOS...)

相关内容:http://stackoverflow.com/questions/23524263/shared-project-with-rc-update-2-for-visual-studio-2013 - Patrick Hofman
修正了您的标签,这与特定的C#无关。 - tnw
1个回答

4

最终我找到了答案,而它非常简单:只需在解决方案的所有客户端项目中引用所有共享项目,编译就能正常运行。

关于此的背景:共享项目中的代码在编译期间会像直接在主项目中一样集成到主项目中。因此,为了从一个共享库中使用代码,您必须引用所有共享库,而不仅仅是您直接使用的共享库(这与普通引用不同)。


1
请问您能告诉我这是如何工作的吗?我正在尝试按照您所解释的方式进行操作,但我无法在基础共享项目中使用函数。我尝试了一个虚拟项目,但高级别无法访问基础共享项目。我尝试了包含显而易见的内容,但仍然不起作用。当需要基础共享项目信息时,高级别共享项目中的Intelisense也无法正常工作。我可以在虚拟项目中同时使用两个共享项目,但我无法在其中一个项目中使用任何共享项目。我尝试更改名称等,但在某个时刻只有一种依赖关系。 - Ali
你必须从主项目引用所有共享项目,并将主项目设置为启动项目 - 共享项目就像普通的*.cs代码文件,只是捆绑在一个项目中。 - Markus
那么好的做法是使用相对路径从另一个共享项目中包含共享项目(这样至少您知道它依赖于什么)? - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接