Visual Studio 2015中的共享项目和类库有什么区别?

Ind*_*411 229 .net c# visual-studio-2015

我正在研究Visual Studio 2015和共享项目的新功能,但我不明白它与使用类库或可移植类库有何不同.谁能解释一下?

编辑:共享项目是Visual Studio 2015中的一项新功能,与便携式类库不同.我理解可移植类库是什么.我想要了解的是共享项目与类库的区别.见下面的链接.

http://www.c-sharpcorner.com/UploadFile/7ca517/shared-project-an-impressive-features-of-visual-studio-201/

Dam*_*ver 228

共享项目和类库之间的区别在于后者是编译的,重用单元是程序集.

而对于前者,重用单​​元是源代码,共享代码被合并到引用共享项目的每个程序集中.

当您想要创建面向特定平台但仍具有应共享代码的单独程序集时,这可能很有用.

另请参见这里:

共享项目引用显示在解决方案资源管理器中的"引用"节点下,但共享项目中的代码和资产被视为链接到主项目中的文件.


在以前版本的Visual Studio 1中,您可以通过添加 - >现有项目然后选择链接来共享项目之间的源代码.但这有点笨重,每个单独的源文件都必须单独选择.随着支持多个不同平台(iOS,Android等),他们决定通过添加共享项目的概念,更容易在项目之间共享源代码.


1这个问题和我的答案(到现在为止)表明,共享项目是Visual Studio 2015中的一项新功能.事实上,他们在Visual Studio 2013 Update 2中首次亮相

  • @Asad - 我没有检查过,但我没想到.您可以使用两个不同的类型,具有相同的名称,并在相同的名称空间内声明但在不同的程序集中存在.这本身并不是一个错误. (3认同)
  • 假设两个项目引用同一个共享项目。如果其中一个添加了对另一个的引用,您是否会收到重复的类型声明错误? (2认同)

Ind*_*411 31

我从这个博客中找到了更多信息.

  • 在类库中,编译代码时,会为每个库生成程序集(dll).但是对于共享项目,它将不包含任何标头信息,因此当您有共享项目引用时,它将被编译为父应用程序的一部分.不会创建单独的dll.
  • 在类库中,只允许编写C#代码,而共享项目可以包含C#代码文件,XAML文件或JavaScript文件等.

  • 类库也可以有.xaml(用户控件) (6认同)

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项目.


Til*_*lak 8

从书2015年的VS 2015中可以看出来

共享项目允许跨多个项目类型共享代码,资产和资源.更具体地说,以下项目类型可以引用和使用共享项目:

  • 控制台,Windows窗体和Windows Presentation Foundation.
  • Windows应用商店8.1应用和Windows Phone 8.1应用.
  • Windows Phone 8.0/8.1 Silverlight应用程序.
  • 便携式类库.

注意: - 共享项目和可移植类库(PCL)都允许共享代码,XAML资源和资产,但当然有一些差异可能总结如下.

  • 共享项目不会生成可重用的程序集,因此只能在解决方案中使用它.
  • 共享项目支持特定于平台的代码,因为它支持可用于检测运行代码的平台的环境变量,如WINDOWS_PHONE_APP和WINDOWS_APP.
  • 最后,共享项目不能依赖第三方库.
  • 相比之下,PCL生成可重用的.dll库并且可以依赖于第三方库,但它不支持平台环境变量


Sha*_*uti 6

类库是共享的编译代码。

共享项目是共享源代码。