Ind*_*411 229 .net c# visual-studio-2015
我正在研究Visual Studio 2015和共享项目的新功能,但我不明白它与使用类库或可移植类库有何不同.谁能解释一下?
编辑:共享项目是Visual Studio 2015中的一项新功能,与便携式类库不同.我理解可移植类库是什么.我想要了解的是共享项目与类库的区别.见下面的链接.
Dam*_*ver 228
共享项目和类库之间的区别在于后者是编译的,重用单元是程序集.
而对于前者,重用单元是源代码,共享代码被合并到引用共享项目的每个程序集中.
当您想要创建面向特定平台但仍具有应共享代码的单独程序集时,这可能很有用.
另请参见这里:
共享项目引用显示在解决方案资源管理器中的"引用"节点下,但共享项目中的代码和资产被视为链接到主项目中的文件.
在以前版本的Visual Studio 1中,您可以通过添加 - >现有项目然后选择链接来共享项目之间的源代码.但这有点笨重,每个单独的源文件都必须单独选择.随着支持多个不同平台(iOS,Android等),他们决定通过添加共享项目的概念,更容易在项目之间共享源代码.
1这个问题和我的答案(到现在为止)表明,共享项目是Visual Studio 2015中的一项新功能.事实上,他们在Visual Studio 2013 Update 2中首次亮相
Ven*_*ula 20
短暂的差异是
1)PCL不会像SharedProject那样具有.NET Framework的完全访问权限.
2)#ifdef用于平台特定代码 - 你不能用PCL编写(#ifdef选项在PCL 中不可用,因为它是单独编译的,作为它自己的DLL,所以在编译时(当评估#ifdef时)它不知道它将成为什么平台.)作为共享项目你可以在哪里.
3)使用PCL中的Inversion Of Control实现平台特定代码,使用#ifdef语句可以在共享项目中实现相同的功能.
可以在以下链接中找到说明PCL与共享项目之间差异的优秀文章
http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/
And*_*iff 16
像其他人已经写过的那样简而言之:
在代码(文件)级别上共享项目重用,允许文件夹结构和资源
pcl
在汇编级别重用
这里的答案大部分都缺少的是PCL中可用功能减少的信息:例如,您的文件操作有限(我在Xamarin跨平台项目中缺少很多File.IO功能).
更详细的
共享项目:
+在定位多个平台时可以使用#if(例如Xamarin iOS,Android,WinPhone)
+每个目标项目可用的所有框架功能(虽然必须有条件地编译)
o在编译时集成
- 稍大一些生成的程序集
- 需要Visual Studio 2013 Update 2或更高版本
pcl:
+生成一个共享程序集
+可用于旧版本的Visual Studio(2013年前更新2)
o动态链接
- lmited功能(所引用的所有项目的子集)
如果你有选择,我会建议去共享项目,它通常更灵活,更强大.如果您事先了解自己的要求并且PCL可以满足这些要求,那么您也可以采用这种方式.PCL还通过不允许您编写特定于平台的代码(这可能不是首先放入共享程序集中的不错选择)来实现更清晰的分离.
两者的主要焦点是当您定位多个平台时,否则您通常只使用普通的库/ dll项目.
共享项目允许跨多个项目类型共享代码,资产和资源.更具体地说,以下项目类型可以引用和使用共享项目:
注意: - 共享项目和可移植类库(PCL)都允许共享代码,XAML资源和资产,但当然有一些差异可能总结如下.