我在看Visual Studio 2015的新功能,共享项目出现了很多,但我不明白它与使用类库或可移植类库有什么不同。有人能解释一下吗?
**编辑:**共享项目是Visual Studio 2015中的一项新功能,与可移植类库不同。我知道什么是可移植类库。我试图理解的是共享项目与类库有何不同。见下面的链接。
http://www.c-sharpcorner.com/UploadFile/7ca517/shared-project-an-impressive-features-of-visual-studio-201/
798qvoo81#
共享项目和类库之间的区别在于后者是编译的,重用的单元是程序集。而对于前者,重用单元是源代码,共享代码被合并到引用共享项目的每个程序集中。当您想要创建针对 * 特定 * 平台的单独程序集,但仍具有应共享的代码时,这可能很有用。参见here:共享项目引用显示在“解决方案资源管理器”中的“引用”节点下,但共享项目中的代码和资产被视为链接到主项目中的文件。在Visual Studio 2012 and earlier versions中,您可以通过Add -> Existing Item然后选择Link在项目之间共享源代码。但这是一种笨重和每个单独的源文件必须单独选择。随着支持多个不同平台(iOS,Android等)的转变,他们决定通过添加共享项目的概念来更容易地在项目之间共享源代码。
m4pnthwp2#
我从这个blog中找到了一些更多的信息。
ovfsdjhp3#
就像其他人写的一样,简而言之:
共享项目
在代码(文件)级重用,同时允许文件夹结构和资源
pcl
组件级重用对我来说,这里的答案中最缺少的是关于PCL中可用的减少功能的信息:举个例子,你的文件操作有限(我在Xamarin跨平台项目中丢失了很多File.IO功能)。更详细地说
共享项目:
pcl:
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/
7gyucuyw5#
类库为共享编译代码。共享项目为共享源代码。
lymgl2op6#
书中的VS 2015 succintly共享项目允许跨多个项目类型共享代码、资产和资源。更具体地说,以下项目类型可以引用和使用共享项目:
注意:共享项目和可移植类库(PCL)都允许共享代码、XAML资源和资产,但当然也有一些差异,可以总结如下。
6条答案
按热度按时间798qvoo81#
共享项目和类库之间的区别在于后者是编译的,重用的单元是程序集。
而对于前者,重用单元是源代码,共享代码被合并到引用共享项目的每个程序集中。
当您想要创建针对 * 特定 * 平台的单独程序集,但仍具有应共享的代码时,这可能很有用。
参见here:
共享项目引用显示在“解决方案资源管理器”中的“引用”节点下,但共享项目中的代码和资产被视为链接到主项目中的文件。
在Visual Studio 2012 and earlier versions中,您可以通过Add -> Existing Item然后选择Link在项目之间共享源代码。但这是一种笨重和每个单独的源文件必须单独选择。随着支持多个不同平台(iOS,Android等)的转变,他们决定通过添加共享项目的概念来更容易地在项目之间共享源代码。
m4pnthwp2#
我从这个blog中找到了一些更多的信息。
ovfsdjhp3#
就像其他人写的一样,简而言之:
共享项目
在代码(文件)级重用,同时允许文件夹结构和资源
pcl
组件级重用
对我来说,这里的答案中最缺少的是关于PCL中可用的减少功能的信息:举个例子,你的文件操作有限(我在Xamarin跨平台项目中丢失了很多File.IO功能)。
更详细地说
共享项目:
o在编译时集成
pcl:
o动态链接
如果你有选择,我建议你选择共享项目,它通常更灵活,更强大。如果你提前知道你的需求,PCL可以满足他们,你也可以走这条路。PCL还通过不允许您编写特定于平台的代码(这可能不是放在共享程序集中的好选择)来强制执行更清晰的分离。
两者的主要焦点是当你面向多个平台时,否则你通常只会使用普通的库/dll项目。
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/
7gyucuyw5#
类库为共享编译代码。
共享项目为共享源代码。
lymgl2op6#
书中的VS 2015 succintly
共享项目允许跨多个项目类型共享代码、资产和资源。更具体地说,以下项目类型可以引用和使用共享项目:
注意:共享项目和可移植类库(PCL)都允许共享代码、XAML资源和资产,但当然也有一些差异,可以总结如下。