VS 2015 中的类库 - 构建跨平台库

Posted

技术标签:

【中文标题】VS 2015 中的类库 - 构建跨平台库【英文标题】:Class libraries in VS 2015 - Building Cross Platform Libraries 【发布时间】:2015-12-25 04:04:01 【问题描述】:

我可以在安装了 Xamarin 的 VS 2015 中创建不同的类库:

    类库 类库 (android) 类库(包) 类库(通用应用程序的便携版) 类库(便携式) 类库 (Xamarin.Forms)

我很想知道两者之间的区别 - 只需简短说明即可:)

情景

我们的团队目前正在开发一个新项目,我们的目标是针对多个平台 - 主要是 Web 和移动 (Xamarin)。虽然我们决定首先关注 MVC Web 应用程序,但我们希望创建一个包含所有模型和业务类(逻辑)的项目,以便以后可以在我们的项目中使用它。哪个类库最合适?

【问题讨论】:

如果您查看现有的开源类库,您会发现它们都没有为您提供支持所有平台的完美方式,而且您的项目特征也很重要。因此,我投票结束这个问题,因为您甚至不想透露更多有关您的项目的信息。 @LexLi 是的。在研究和试验了这些类库之后,我发现没有一个能很好地与 MVC 和移动项目一起使用。顺便说一句,该项目只是针对特定细分市场的简单电子商务 - 包括网络和移动应用程序。 【参考方案1】:

这个问题的范围很大,我会尽量回答:

类库

输出 DLL 的标准 .NET 类库。此项目类型只能在桌面平台(Mac、Windows)上使用。 Android 和 ios 项目不能引用这些项目类型。

类库 (Android)

类似于normal Android library 的Android 特定类库。此项目旨在共享 Android 特定资源,例如活动、片段、视图、drawable、字符串等。此项目只能被 Android App 项目或其他 Android 库项目引用。

我们通常将我们的主要 Android 应用程序放入一个库中,然后创建一个仅启动屏幕的 Android 应用程序来链接该库项目。这样我们就可以将每个屏幕隔离到一个单独的“Testbed”应用程序中,以独立测试每个屏幕,而无需遍历整个应用程序来测试它们。

类库(包)

此类型不在我的 VS 安装中,因此我无法评论它是什么。

类库(适用于通用应用程序)

面向 .NET 4.5 的可移植类库,包括对 Windows 8、Xamarin.Android、Xamarin.iOS 和 Xamarin.iOS(经典)的支持。这是TargetFrameworkProfile Profile7

类库(便携式)

面向 .NET 4.5 的可移植类库,支持 Windows 8、Windows Phone 8.1、Windows Phone Silverlight 8、Xamarin.Android、Xamarin.iOS 和 Xamarin.iOS(经典)。这是TargetFrameworkProfile Profile259

类库 (Xamarin.Forms)

面向 .NET 4.5 的可移植类库,支持 Windows 8、Windows Phone 8.1、Windows Phone Silverlight 8、Xamarin.Android、Xamarin.iOS(经典)、Xamarin.iOS Unified 和 Xamarin.Mac Unified。这是TargetFrameworkProfile Profile78

请注意,库 Portable for Universal AppsXamarin.FormsPortable 是相同的项目类型(PCL 库),除了 Xamarin.Forms 包括对最多平台的支持。


在项目结构方面,我们为每个平台(Android、iOs、Windows)都有一个引用 PCL(定义我们的接口和 DB 实体)的项目和一个实现大部分应用程序逻辑的共享项目。

我建议阅读以下链接并将Tasky 源代码用作您的应用程序的基础:

Building Cross Platform Applications Shared Projects

【讨论】:

您好,很抱歉迟到了。对您提供的资源进行更多研究,我想没有标准的方法来实现适用于所有项目的类库(至少对于 MVC 和 Xamarin 项目)?最后,我决定使用普通的类库(它适用于 MVC 项目),我可能会为移动项目编写另一个 Xamarin 可移植类库和 API。看到“Tasky”和你提到的文章我很开心。谢谢你:) 简而言之,不是真的。我们大量使用共享项目并将它们引用到特定于平台的库中来实现这一点。我打算在有时间的时候做一个 github 示例。希望我能帮上忙! 如果答案有帮助,接受它总是好的 :) 如果我可以添加更多细节来帮助,请告诉我。 好吧,使用共享库我似乎无法创建我的实体框架模型。还是我错过了什么? 不,这是正确的,他们通常会进入 PCL。

以上是关于VS 2015 中的类库 - 构建跨平台库的主要内容,如果未能解决你的问题,请参考以下文章

构建一个简单的WCF应用

Qt5.7+VS2015环境下使用QtCreator编译QtAV视频库

.net 标准是不是像 .net Core 一样跨平台? [复制]

VS2015编译后在其他平台缺失MSVCP140.DLL问题的修复

10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)

Java世界中的类vs包vs模块vs组件vs容器vs服务vs平台[关闭]