【问题标题】:Reference Portable Class Library (PCL) from ASP.NET 5 Web API参考 ASP.NET 5 Web API 中的可移植类库 (PCL)
【发布时间】:2016-10-04 18:30:05
【问题描述】:

我正在使用 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?

【问题讨论】:

  • 请先升级到 ASP.NET Core RC2,dot.net 然后使用新的框架名称和导入语句来使用现有的 PCL 库。 RC1 已经死了,你应该把它留在后面。
  • 我升级到 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'
  • 我认为您误解了这个问题。问题是两者都引用了一个 PCL 库:IOS App 和 .NET Core MVC。至于 NETStandard.Library,这是 .NET API 的正式规范,可用于所有 .NET 运行时。

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


【解决方案1】:

我认为你最好的方法是:

将此PCL 升级到netstandard 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?

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

  1. 将 PCL 升级到 netstandard,将 API 项目升级到 netcore。 netcore 项目可以轻松消费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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多