【问题标题】:Is it possible to reference a shared project from another shared project?是否可以从另一个共享项目中引用一个共享项目?
【发布时间】:2014-10-15 20:28:57
【问题描述】:

我正在查看 Visual Studio 2013 中的新共享项目功能。这是一个非常不错的功能,但是如何在“更高级别”共享项目中使用“基础”共享项目中的代码?共享项目中似乎缺少引用功能...???

如何构建大型现实世界的商业应用程序,而无需在多个项目中分离代码?

更新: 我觉得我不够清楚:

假设您想为 Windows 平台开发一个通用应用程序,并使用 xamarin 来支持 iOS 和 android。因此,您将特定于平台的代码放入特定于平台的项目中,在共享库中定义接口,并通过依赖注入将特定于平台的代码传递给共享代码,并从特定于平台的项目中引用所有特定于平台的库。

到目前为止一切都很好......

但要保持平台特定代码的小型化,您需要为共享项目中的业务逻辑开发业务逻辑和基础框架。

现在您有了第二个客户。在这里,您当然希望再次重用基础框架并构建一个新的业务和 UI 层。

现在我想在两个项目中使用相同的框架层。

如果无法在共享项目之间进行引用,该怎么办?

(链接文件不是一个可能的选项,因为我的项目中的普通解决方案大约有 1000 个或更多文件,因此您将永远无法跟踪您必须在所有解决方案中链接的所有文件。/ilMerge也是不可能的 - 它不能合并 WPF 项目,也不适用于 Android 和 iOS...)

【问题讨论】:

标签: visual-studio visual-studio-2013 shared-project


【解决方案1】:

终于找到了答案,很简单:只要在解决方案中引用all客户端项目中的all共享项目,编译就可以正常运行了。

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

【讨论】:

  • 您能告诉我它是如何工作的吗?我正在尝试完全按照您的解释进行操作,但我无法使用基于共享项目中的功能。我尝试了一个虚拟项目,更高级别无法访问基本共享项目。我尝试包括看起来很明显但仍然无效的内容。此外,当需要基本共享项目信息时,Intelisense 不适用于更高级别的共享项目。我可以在我的虚拟项目中使用这两个共享项目,但我不能在另一个项目中使用任何共享项目。我试图切换名称和东西,但在给定的时间只有一种方式。
  • 您必须从主项目中引用所有共享项目并将主项目设置为启动项目 - 共享项目就像普通的 *.cs 代码文件,只是捆绑在一个项目中。
  • 所以好的做法是使用相对路径包含另一个共享项目中的共享项目(所以至少你知道它依赖什么)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多