什么项目类型可以引用.NET程序集,并且可以由iOS Xamarin应用程序引用

时间:2017-11-25 19:25:39

标签: xamarin.ios portable-class-library visual-studio-mac

我正在寻找一些帮助来正确设置我的Visual Studio for Mac项目。我是Visual Studio Mac的新手,并希望能在正确的道路上行走。

我有一个大型类库,最初是在Windows上的Visual Studio 2017中开发的。我想使用大部分代码来开发iOS应用程序。此类库需要引用:

  • 系统
  • System.Runtime.Serialization
  • System.ServiceModel
  • System.ServiceModel.Web
  • 的System.Web。

我尝试将该代码移植到Visual Studio for Mac中的可移植类库中。但是PCL不允许你引用上面的程序集(除非我遗漏了什么)。

然后我将其移植到.NET Library项目(其他 - > .NET - > Library)项目。但是,我的iOS应用程序将不允许引用该项目类型,因为VS for Mac表示它具有“不兼容的目标框架:.NETFramework,Version-v4.6.1”。

我应该为这个类库使用什么项目类型,以便它可以引用所需的.NET程序集,并且可以从我的iOS应用程序中引用它?

1 个答案:

答案 0 :(得分:1)

可能的选择:

  1. 使用其他可移植类库(PCL)配置文件。
  2. 使用.NET标准项目。
  3. 使用共享项目。
  4. 除了System.Web之外,还有一些PCL配置文件包含您正在寻找的程序集。您可以通过查看PCL目录来查看Mac上可用的程序集:

    /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable

    如果您打开终端窗口,则可以运行搜索find . -name "System.ServiceModel.Web.dll",或使用Finder浏览文件夹以查找包含所需程序集的PCL配置文件。

    另一种可能性是使用.NET Standard 2.0项目,该项目有许多可以使用的程序集,并支持由Xamarin.iOS项目引用。您可能需要安装一些其他System。* NuGet包来提供所需的程序集。

    记录了.NET Standard 2.0中可用的命名空间:

    https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0

    另一种选择是使用共享项目。这本身没有程序集引用,但基本上是共享代码,编译到引用它的所有项目中。在这里,您可以将#ifdefs用于任何iOS或Android特定的代码。