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

本文关键字:类库 区别 是什么 项目 Studio 2015 共享 Visual | 更新日期: 2023-09-27 17:53:30

我在看Visual Studio 2015的新功能,共享项目出现了很多,但我不明白它与使用类库或可移植类库有什么不同。有人能解释一下吗?

Edit: Shared Project是Visual Studio 2015中的一个新特性,它不同于可移植类库。我知道什么是可移植类库。我想了解的是共享项目与类库的不同之处。请看下面的链接。

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

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

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

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

当您想要创建单独的程序集,目标是特定的平台,但仍然有应该共享的代码时,这是很有用的。

参见此处:

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


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

我从这个博客上找到了更多的信息。

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

就像其他人已经写的那样,总之:

共享项目
在代码(文件)级别重用,同时允许文件夹结构和资源

pcl
在程序集级别重用

对我来说,这里的答案中最缺少的是关于PCL中可用的减少功能的信息:作为一个例子,你有有限的文件操作(我错过了很多文件操作)。Xamarin跨平台项目中的IO功能)。

更详细
共享项目:
+可以在针对多个平台(如Xamarin iOS, Android, WinPhone)时使用#if
+所有框架功能可用于每个目标项目(尽管必须有条件编译)
o在编译时集成
-结果组件的尺寸略大
-需要Visual Studio 2013 Update 2或更高版本

pcl :
+生成共享程序集
+可用于旧版本的Visual Studio (pre-2013 Update 2)
O动态链接
-功能有限(被引用的所有项目的子集)

如果可以选择,我建议使用共享项目,它通常更灵活,更强大。如果你事先知道你的需求,而PCL可以满足你的需求,你可能也会走那条路。PCL还通过不允许编写特定于平台的代码(首先将其放入共享程序集中可能不是一个好的选择)来强制实现更清晰的分离。

两者的主要焦点是当您针对多个平台时,否则您通常只使用普通的库/dll项目。

短差异

1) PCL将无法完全访问。net框架,而SharedProject拥有。

2) #ifdef用于平台特定的代码-您不能在PCL中编写(#ifdef选项在PCL中不可用,因为它是单独编译的,作为自己的DLL,所以在编译时(当#ifdef被评估时)它不知道它将成为哪个平台的一部分。

3)平台特定的代码是使用PCL中的反转控制实现的,其中使用#ifdef语句可以在共享项目中实现相同的功能。

在以下链接

可以找到一篇优秀的文章,说明了PCL与共享项目之间的差异http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/

类库为共享编译代码。

共享项目为共享源代码。

摘自《VS 2015》简体

Shared Projects允许在多个项目类型之间共享代码、资产和资源。更具体地说,以下项目类型可以引用和使用共享项目:

  • 控制台、Windows窗体和Windows演示基础。
  • Windows Store 8.1应用程序和Windows Phone 8.1应用程序。
  • Windows Phone 8.0/8.1 Silverlight apps.
  • 可移植类库。

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

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