【问题标题】:Package [some package] is not compatible with netcoreapp1.0包[某些包]与netcoreapp1.0不兼容
【发布时间】:2016-08-22 06:05:37
【问题描述】:

dotnet restore 上,我们收到以下错误:

包 Microsoft.AspNet.SomePackage 5.6.7 与 netcoreapp1.0 (.NETCoreApp,Version=v1.0) 不兼容。包 Microsoft.AspNet.SomePackage 5.6.7 支持:net45 (.NETFramework,Version=v4.5)

我们的 project.json 看起来像这样:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*",
    "Microsoft.AspNet.SomePackage": "5.6.7",
    "Microsoft.NETCore.App": "1.0.0-*"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "portable-net45+wp80+win8+wpa81+dnxcore50",
        "portable-net451+win8"
      ]
    }
  },
  "runtimes": {
    "win8-x64": {}
  }
}

我们如何dotnet restoredotnet run 以运行我们的应用程序的方式?

【问题讨论】:

  • Microsoft.AspNet.SomePackage 的目标是什么框架?
  • 错误提示它,“支持:net45”。
  • "Microsoft.AspNet.SomePackage": "5.6.7", 很有可能,您引用的是 ASP.NET Core RC1 程序集,甚至是 ASP.NET 4.5 包。新的 ASP.NET Core 程序集在 rc2 中重新命名为 Microsoft.AspNetCore.*(来自 Microsoft.AspNet.*)。另一个提示是它使用 >= 0 的版本。重命名为 Microsoft.AspNetCore.* 所有版本都重置为 1.0.0-(EF、ASP.NET 和 MVC 相关程序集)

标签: asp.net asp.net-core


【解决方案1】:

注意 - 通过将“net451”添加到框架导入中,我能够使其工作。

"frameworks": {
   "netcoreapp1.0": {
      "imports": [
         "net451",
         "dotnet5.6",
         "portable-net45+win8"
       ]
   }
},

我是从here那里拿到的

【讨论】:

  • 我也有一个针对 .net framework 4.5 的旧库,这解决了我的问题。这样做有什么副作用吗?
  • 嗨@Sobhan 可能的副作用是您的服务器中需要.net framework 4.5。使用core的好处是可以部署在linux服务器上。
  • 这很不幸,因为使用 .net Core 的主要原因是为了消除对操作系统类型的依赖。
【解决方案2】:

简短的回答是,你不能。在某些狭窄的情况下,您可以使用导入来覆盖 nuget 的内置依赖规则。在这种情况下,您不能,.NET Framework 和 .NET Core 不兼容。错误表明该包仅支持 net45 (.NET Framework 4.5)。您不能将它与您的 .NET Core 应用程序一起使用

【讨论】:

  • 好的。所以imports 允许我们使用不针对我们项目的framework 的依赖项(包),当且仅当这些依赖项确实针对与我们项目的框架兼容的框架。对吗?
  • 嗨@davidfowl,如果我们在将包更新到.NET Core 之前迁移到RC2,我们现在无法编译我们的应用程序吗?
  • 您之前使用过 .NET Core 还是使用过 .NET Framework?您可以在 .NET Framework 上将项目转换为 ASP.NET,但如果您的依赖项没有 .NET Core 版本,则您无法迁移到 .NET Core(除非您删除/重写这些依赖项)
【解决方案3】:

如果您需要做同样的事情,但使用新的 .csproj 而不是 project.json 进行配置,请编辑您的 .csproj 文件并在属性组下方添加以下内容:

<PropertyGroup>
    <PackageTargetFallback>net451;dotnet5.6;portable-net45+win8</PackageTargetFallback>
</PropertyGroup>

取自here

【讨论】:

    【解决方案4】:

    requirejs 在 github (https://github.com/requirejs/requirejs) 上,可以用 core 作为依赖来编译它。

    如果包是开源的或源代码可用,则可以使用 dot net core 重新编译而不是 4.5 框架。 这一切都取决于其他其他依赖项及其与 dotnet core 的兼容性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2018-01-28
      相关资源
      最近更新 更多