【问题标题】:What project type can reference .NET assemblies and can be referenced by an iOS Xamarin app什么项目类型可以引用 .NET 程序集并且可以被 iOS Xamarin 应用程序引用
【发布时间】:2017-11-25 19:25:39
【问题描述】:

我正在寻求一些帮助来正确设置我的 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 库项目(其他 -> .NET -> 库)项目。但是,我的 iOS 应用不允许引用该项目类型,因为 VS for Mac 说它具有“不兼容的目标框架:.NETFramework,版本-v4.6.1)。

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

【问题讨论】:

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


    【解决方案1】:

    可能的选择:

    1. 使用不同的可移植类库 (PCL) 配置文件。
    2. 使用 .NET Standard 项目。
    3. 使用共享项目。

    对于除 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 的代码。

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2016-10-17
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多