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

ekqde3dh  于 2023-05-30  发布在  .NET
关注(0)|答案(6)|浏览(267)

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

**编辑:**共享项目是Visual Studio 2015中的一项新功能,与可移植类库不同。我知道什么是可移植类库。我试图理解的是共享项目与类库有何不同。见下面的链接。

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

798qvoo8

798qvoo81#

共享项目和类库之间的区别在于后者是编译的,重用的单元是程序集。
而对于前者,重用单元是源代码,共享代码被合并到引用共享项目的每个程序集中。
当您想要创建针对 * 特定 * 平台的单独程序集,但仍具有应共享的代码时,这可能很有用。
参见here
共享项目引用显示在“解决方案资源管理器”中的“引用”节点下,但共享项目中的代码和资产被视为链接到主项目中的文件。
Visual Studio 2012 and earlier versions中,您可以通过Add -> Existing Item然后选择Link在项目之间共享源代码。但这是一种笨重和每个单独的源文件必须单独选择。随着支持多个不同平台(iOS,Android等)的转变,他们决定通过添加共享项目的概念来更容易地在项目之间共享源代码。

m4pnthwp

m4pnthwp2#

我从这个blog中找到了一些更多的信息。

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

ovfsdjhp3#

就像其他人写的一样,简而言之:

共享项目

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

pcl

组件级重用
对我来说,这里的答案中最缺少的是关于PCL中可用的减少功能的信息:举个例子,你的文件操作有限(我在Xamarin跨平台项目中丢失了很多File.IO功能)。
更详细地说

共享项目

  • 可以在针对多个平台(例如例如Xamarin iOS、Android、WinPhone)
  • 所有框架功能可用于每个目标项目(尽管必须有条件地编译)
    o在编译时集成
  • 结果程序集的大小稍大
  • 需要Visual Studio 2013 Update 2或更高版本

pcl

  • 生成共享程序集
  • 可用于较旧版本的Visual Studio(2013 Update 2之前)
    o动态链接
  • 有限的功能(引用它的所有项目的子集)
    如果你有选择,我建议你选择共享项目,它通常更灵活,更强大。如果你提前知道你的需求,PCL可以满足他们,你也可以走这条路。PCL还通过不允许您编写特定于平台的代码(这可能不是放在共享程序集中的好选择)来强制执行更清晰的分离。
    两者的主要焦点是当你面向多个平台时,否则你通常只会使用普通的库/dll项目。
gorkyyrv

gorkyyrv4#

短差为
1)PCL不会像SharedProject那样完全访问.NET Framework。
2)#ifdef用于平台特定的代码-您不能在PCL中编写(*#ifdef选项在PCL中不可用,因为它是单独编译的,作为自己的DLL,因此在编译时(当#ifdef被评估时)它不知道它将是哪个平台的一部分。
3)平台特定的代码是使用PCL中的控制反转实现的,而使用#ifdef语句,您可以在共享项目中实现相同的功能。
在下面的链接中可以找到一篇很好的文章,它说明了PCL与共享项目之间的差异
http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/

7gyucuyw

7gyucuyw5#

类库为共享编译代码。
共享项目为共享源代码。

lymgl2op

lymgl2op6#

书中的VS 2015 succintly
共享项目允许跨多个项目类型共享代码、资产和资源。更具体地说,以下项目类型可以引用和使用共享项目:

  • 控制台、Windows窗体和Windows Presentation Foundation。
  • Windows Store 8.1应用程序和Windows Phone 8.1应用程序。
  • Windows Phone 8.0/8.1 Silverlight应用程序。
  • 可移植类库。

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

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

相关问题