我一直在查看Visual Studio 2015的新功能,并且Shared Project出现了很多,但是我不明白它与使用类库或可移植类库有何不同。谁能解释?
编辑:共享项目是Visual Studio 2015中的一项新功能,与可移植类库不同。我了解什么是可移植类库。我想了解的是共享项目与类库的不同之处。请参阅下面的链接。
我一直在查看Visual Studio 2015的新功能,并且Shared Project出现了很多,但是我不明白它与使用类库或可移植类库有何不同。谁能解释?
编辑:共享项目是Visual Studio 2015中的一项新功能,与可移植类库不同。我了解什么是可移植类库。我想了解的是共享项目与类库的不同之处。请参阅下面的链接。
Answers:
共享项目和类库之间的区别在于,后者是经过编译的,而重用的单位是程序集。
而对于前者,重用单位是源代码,并且共享代码被合并到引用共享项目的每个程序集中。
当您要创建针对特定平台但仍具有应共享代码的单独程序集时,此功能很有用。
也可以在这里查看:
共享项目参考显示在解决方案资源管理器的“参考”节点下,但是共享项目中的代码和资产被视为链接到主项目的文件。
在Visual Studio 1的早期版本中,您可以通过添加->现有项,然后选择链接来在项目之间共享源代码。但这有点笨拙,每个单独的源文件都必须单独选择。随着支持多种不同平台(iOS,Android等)的发展,他们决定通过添加共享项目的概念来简化项目之间的源共享。
1这个问题和我的答案(到现在为止)表明“共享项目”是Visual Studio 2015中的一项新功能。实际上,它们在Visual Studio 2013 Update 2中首次亮相。
短内差异是
1)PCL将不具有对SharedProject拥有的.NET Framework的完全访问权限。
2)#ifdef用于平台特定的代码-您不能用PCL编写(#ifdef选项在PCL 中不可用,因为它是作为其自己的DLL单独编译的,因此在编译时(在评估#ifdef时)它不知道它将成为哪个平台的一部分。)您可以在哪里共享项目。
3)特定于平台的代码是使用PCL中的Inversion of Control实现的,与使用#ifdef语句一样,您可以在Shared Project中实现相同的功能。
可以在以下链接中找到一篇出色的文章,说明PCL与共享项目之间的差异
http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/
简而言之,就像其他人已经写道:
在代码(文件)级别共享项目重用,还允许文件夹结构和资源
组装级别的pcl重用
对于我来说,答案中最缺少的是PCL中可用功能减少的信息:例如,您的文件操作有限(我在Xamarin跨平台项目中缺少许多File.IO功能)。
更详细的
共享项目:
+在针对多个平台(例如Xamarin iOS,Android,WinPhone)时可以使用#if
+每个目标项目可用的所有框架功能(尽管必须有条件地进行编译)
o在编译时进行集成
-大小略大的程序集数量
-需要Visual Studio 2013 Update 2或更高版本
pcl:
+生成共享程序集
+可与旧版本的Visual Studio(2013年之前的更新2)一起使用
o动态链接
-受限的功能(所引用的所有项目的子集)
如果您有选择,我建议您进行共享项目,它通常更灵活,功能更强大。如果您事先知道自己的要求,并且PCL可以满足要求,那么您也可以采用这种方法。PCL还通过不允许您编写特定于平台的代码(一开始放置到共享程序集中不是一个好的选择)来强制执行更清晰的分隔。
两者的主要焦点是针对多个平台时,否则通常只使用普通的库/ dll项目。
摘自《VS 2015》
共享项目允许跨多种项目类型共享代码,资产和资源。更具体地说,以下项目类型可以引用和使用共享项目:
注意:-共享项目和可移植类库(PCL)都允许共享代码,XAML资源和资产,但是当然存在一些差异,可以总结如下。
类库是共享的编译代码。
共享项目是共享源代码。