【问题标题】:Using .NET Core packages on legacy .NET platforms在旧版 .NET 平台上使用 .NET Core 包
【发布时间】:2015-12-22 16:43:33
【问题描述】:

我正在使用 VS 中那些新的“类库(包)”模板之一创建一个 NuGet 包。我想知道,有什么方法可以使用我的 PCL 中的包使用 .NET Core?

例如,我有一个包Enu,带有以下project.json

{
    "title": "Enu",
    // project details...

    "dependencies": {
        "System.Runtime": "4.0.0"
    },

    "frameworks": {
        "dotnet": { }
    }
}

然后我有一个针对 .NET 4.5、Windows 8 和 Windows 8.1 的旧版 PCL。当我尝试通过Install-Package Enu 安装软件包时,出现以下错误:

PM> Install-Package Enu
# blah blah blah
Install-Package : Could not install package 'Enu 4.0.0'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile111', but the package does not contain 
any assembly references or content files that are compatible with that framework. For more information, contact the package author.

我能做些什么来解决这个问题?

注意:很奇怪,它可以在控制台应用程序上运行。

【问题讨论】:

  • 您在控制台应用程序中针对哪些框架?
  • @DaveZych 控制台应用程序在 .NET 4.5 上运行。
  • 对不起,我看错了你的问题。我不是很肯定,但我不相信您可以在 .NET Core 之外的任何地方引用您的 .NET Core 应用程序。
  • @DaveZych 我也这么认为,但由于某种原因,即使控制台使用 .NET Framework(而不是 .NET Core),它仍然可以在控制台上运行。

标签: c# asp.net .net nuget asp.net-core


【解决方案1】:

是的,这是可能的。这是一个很好的参考图表(取自here):

tl;dr 要将所有内容添加到您的project.json

"frameworks": {
    "dotnet": { }, // .NET 4.6 and DNX
    "net45": { }, // .NET Framework 4.5
    "netcore45": { } // WinRT and Silverlight
}

【讨论】:

  • 请注意,DNX 已被 .NET Core CLI 抛弃并取代。因此,现在代替 DNXCORE50,它是用于类库的 NETSTANDARD1.5,以及用于测试项目等应用程序的 NETCOREAPP1.0。
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2019-06-20
相关资源
最近更新 更多