ASP.NET 5 Web API中引用可移植类库(PCL)

时间:2016-06-04 22:19:33

标签: asp.net-web-api xamarin asp.net-core portable-class-library asp.net5

我正在使用VS 2015。

我创建了一个PCL项目。 Class Library Portable(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":{   "依赖性&#34 ;:    {      " MyPCL":" 1.0.0 - *"    } }

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

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

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

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

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

我也尝试过dnu恢复..仍然无效。

快速更新:

昨天我升级到了RC2。

它无法解决问题。在project.json中我现在有:

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

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

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

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

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

  2. 该项目未列出' win10-x64,win81-x64,win8-x64,win7-x64'在'运行时'部分。

  3. 找不到框架的运行时目标' .NETStandard,Version = v1.5'兼容其中一个目标运行时:' win10-x64,win81-x64,win8-x64,win7-x64'

  4. 有人知道如何解决这个问题吗?

    甚至可以从ASP.NET 5 Web API或MVC 6项目引用此PCL吗?

1 个答案:

答案 0 :(得分:1)

我认为你最好的方法是:

将此PCL升级到netstandard 1.3+库。然而,这会强制您创建/升级到netcore 1.0+ MVC / API应用程序以使用interface INetCoreApp10 : INetStandard15netcore项目的最佳类比(当前版本为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吗?

是的。有很多方法可以做到这一点,我个人认为正确的方法是使用" new"在这种情况下,诸如netstandardnetcore之类的位。根据我的回答,你可以做多件事:

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