3

我正在使用 VS 2015。

我创建了一个 PCL 项目。可移植类库(IOS、Android 和 Windows)。

这个 PCL 是一个简单的 POCO 类。

它针对:.NET Framework 4.5、ASP.NET Core 1.0、Windows Phone Silverlight 8、Xamarin.Android、Xamarin.IOS

我的 PCL 由 Xamarin.IOS 应用程序引用,我想在我的 Web API 中使用相同的 PCL。

我正在尝试从 ASP.NET 5 Web API 引用这个 PCL 项目。

以下在我的 project.json 中:

“dnx451”:{“依赖项”:{“MyPCL”:“1.0.0-*”}}

--> 错误:无法解决依赖关系。

我也尝试在框架下添加以下内容,但没有运气。

".NETPortable,Version=v4.0,Profile=Profile111": {

    "dependencies": {
         "MyPCL": "1.0.0-*"
       }

  "frameworkAssemblies": {
    "mscorlib": "",
    "System": "",
    "System.Core": ""
  }
}

我也试过 dnu restore .. 还是不行。

快速更新:

昨天我升级到了RC2。

它不能解决问题。在 project.json 现在我有:

   "dependencies": 
   {
       "NETStandard.Library":  "1.5.0-rc2-24027"
   } 

我在框架下添加了以下内容:

"netstandard1.5": {
  "imports": "dnxcore50"
}

当我编译我的 Web API 项目时,我收到以下 3 个错误:

  1. 项目尚未恢复或恢复失败。(虽然我确实运行了 dotnet restore)

  2. 该项目未在“运行时”部分列出“win10-x64、win81-x64、win8-x64、win7-x64”之一。

  3. 找不到与以下目标运行时之一兼容的框架“.NETStandard,Version=v1.5”的运行时目标:“win10-x64、win81-x64、win8-x64、win7-x64”

请问有谁知道如何解决这个问题?

是否可以从 ASP.NET 5 Web API 或 MVC 6 项目中引用此 PCL?

4

1 回答 1

1

我认为您最好的方法是:

将此升级PCLnetstandard 1.3+库。然而,这将迫使您创建/升级到要使用的netcore 1.0+MVC/API 应用程序,这interface INetCoreApp10 : INetStandard15是与netcore项目(当前版本为 1.1)的最佳类比。

有关如何升级的更多信息,您可以查看以下内容:https ://blog.xamarin.com/net-standard-library-support-for-xamarin/

请注意,如果您这样做,您还可以使用Compatibility Shim来引用netstandard库中的其他 PCL。

https://docs.microsoft.com/en-us/dotnet/articles/standard/library#pcl-compatibility

要回答您的问题:

是否可以从 ASP.NET 5 Web API 或 MVC 6 项目中引用此 PCL?

是的。有很多方法可以做到这一点,我个人认为正确的方法是在这种情况下使用“新”位,例如netstandardnetcore。根据我的回答,您可以做很多事情:

  1. 将 PCL 升级到netstandard并将 API 项目升级到netcore. 该netcore项目可以轻松消耗该netstandard项目。
  2. 将 API 项目升级到netcore并使用Compatibility Shim来引用旧的 PCL 配置文件。
  3. 继续使用预netcore/netstandard项目类型并在ASP.NET MVC 5 Web API project. 这也称为netframework项目而不是netcore. 即https://docs.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server
于 2017-01-12T17:28:10.907 回答