【问题标题】:Solving error "Microsoft.NETCore.App 1.0.0 does not support framework .NETFramework,Version=v4.6.1"解决错误“Microsoft.NETCore.App 1.0.0 不支持框架 .NETFramework,Version=v4.6.1”
【发布时间】:2016-07-25 15:48:23
【问题描述】:

我有一个使用 net461 引用运行的 ASP.NET Core 1.0 完整应用程序。现在我正在尝试添加另一个框架 - netcoreapp1.0。为此,我像这样更新了我的 project.json:

{
   "userSecretsId":"",
   "version":"2.4.0-*",
   "buildOptions":{
      "emitEntryPoint":true,
      "preserveCompilationContext":true
   },
   "dependencies":{
      "Microsoft.ApplicationInsights.AspNetCore":"1.0.0",
      "Microsoft.AspNetCore.Authentication.Cookies":"1.0.0",
      "Microsoft.AspNetCore.Diagnostics":"1.0.0",
      "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore":"1.0.0",
      "Microsoft.AspNetCore.Identity":"1.0.0",
      "Microsoft.AspNetCore.Identity.EntityFrameworkCore":"1.0.0",
      "Microsoft.AspNetCore.Mvc":"1.0.0",
      "Microsoft.AspNetCore.Mvc.TagHelpers":"1.0.0",
      "Microsoft.AspNetCore.Server.IISIntegration":"1.0.0",
      "Microsoft.AspNetCore.Server.Kestrel":"1.0.0",
      "Microsoft.AspNetCore.StaticFiles":"1.0.0",
      "Microsoft.EntityFrameworkCore":"1.0.0",
      "Microsoft.EntityFrameworkCore.SqlServer":"1.0.0",
      "Microsoft.Extensions.Configuration.CommandLine":"1.0.0",
      "Microsoft.Extensions.Configuration.FileExtensions":"1.0.0",
      "Microsoft.Extensions.Configuration.Json":"1.0.0",
      "Microsoft.Extensions.Configuration.UserSecrets":"1.0.0",
      "Microsoft.Extensions.Logging":"1.0.0",
      "Microsoft.Extensions.Logging.Console":"1.0.0",
      "Microsoft.Extensions.Logging.Debug":"1.0.0",
      "Microsoft.VisualStudio.Web.BrowserLink.Loader":"14.0.0",
      "Microsoft.VisualStudio.Web.CodeGenerators.Mvc":"1.0.0-preview2-final"
   },
   "tools":{
      "BundlerMinifier.Core":"2.0.238",
      "Microsoft.AspNetCore.Razor.Tools":"1.0.0-preview2-final",
      "Microsoft.AspNetCore.Server.IISIntegration.Tools":"1.0.0-preview2-final",
      "Microsoft.Extensions.SecretManager.Tools":"1.0.0-preview2-final"
   },
   "commands":{
      "ef":"EntityFramework.Commands",
      "web":"Microsoft.AspNetCore.Server.Kestrel"
   },
   "frameworks":{
      "net461":{

      },
      "netcoreapp1.0":{
         "imports":[
            "dotnet5.6",
            "portable-net45+win8"
         ]
      }
   },
   "runtimes":{
      "win10-x64":{

      },
      "win81-x64":{

      },
      "win8-x64":{

      },
      "win7-x64":{

      }
   },
   "publishOptions":{
      "exclude":[
         "**.user",
         "**.vspscc",
         "wwwroot",
         "node_modules"
      ]
   },
   "scripts":{
      "prepublish":[
         "npm install",
         "bower install",
         "gulp clean",
         "gulp min"
      ]
   }
}

修改project.json后出现这个错误:

未能使以下项目可运行:MVC6_Full_Version (.NETCoreApp,Version=v1.0) 原因:未找到预期的 coreclr 库 在包图中。请尝试再次运行 dotnet restore。

为了解决这个问题,我运行了dotnet restore 命令,但没有成功。

然后,我添加了这个块:

"Microsoft.NETCore.App": {
  "version": "1.0.0",
  "type": "platform"
},

添加此块后,我得到一个不同的错误:

代码:NU1002 描述:依赖 Microsoft.NETCore.App 1.0.0 不支持框架 .NETFramework,Version=v4.6.1。

基本上,我想在我的应用程序中添加这两个引用 - .NET Framework 4.6.1 和 ASP.NET Core 1.0。

如何解决此错误?

【问题讨论】:

标签: .net asp.net-core .net-core asp.net-core-1.0 project.json


【解决方案1】:

绝对可以使用 .NET Framework 或 .NET Core 构建 ASP.NET Core 项目。你真的很接近 - 只需要一些调整:

  • 删除runtimes 部分,除非您打算进行本机编译(有点不寻常)
  • 将对Microsoft.NETCore.App 的引用放在dependencies 部分 netcoreapp1.0 部分中。我已经测试了以下更改,它可以恢复并编译没有错误:

project.json

...

   "frameworks": {
      "net461": {

      },
      "netcoreapp1.0": {
         "dependencies": {
            "Microsoft.NETCore.App": {
               "type": "platform",
               "version": "1.0.0"
            }
         },
         "imports": [
            "dotnet5.6",
            "portable-net45+win8"
         ]
      }
   }

Microsoft.NETCore.App 依赖项仅对 .NET Core 是必需的,在此处添加它可以确保在为该框架构建时它可用。

另外,commands 部分已被弃用,可以删除。

【讨论】:

    【解决方案2】:

    我通过更改以下内容引用了 .net 4.6.1 中的 .net 核心类库。

    在尝试从 .net 4.6.1 引用 .net 核心时收到此错误之前

    修复:

    原创

        {
        "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.0",
          "type": "platform"
        },
        "Interop.SHDocVw.dll": "1.1.0",
        "Microsoft.mshtml.dll": "7.0.3300.1"
        },
    
        "frameworks": {
        //"net461": {},
        "netcoreapp1.0": {
          "imports": [
            "dotnet5.6",
            "portable-net45+win8",
            "net461"
          ]
        }
       },
    
        "scripts": {
        "prepublish": [ "bower install", "dotnet bundle" ]
        }
       }
    

    更正

        {
         "dependencies": {
            "Interop.SHDocVw.dll": "1.1.0",
            "Microsoft.mshtml.dll": "7.0.3300.1"
         },
    
        "frameworks": {
            "net461": {
            },
            "netcoreapp1.0": {
            "dependencies": {
                "Microsoft.NETCore.App": {
                "type": "platform",
                "version": "1.0.0"
                }
            },
            "imports": [
                "dotnet5.6",
                "portable-net45+win8",
                "net461"
            ]
            }
        },
    
        "scripts": {
            "prepublish": [ "bower install", "dotnet bundle" ]
        }
    }
    

    【讨论】:

    • 这个 project.config whoopla 是一团糟。所以他们所说的 .NetCore 是什么意思,您仍然必须正确引用所有内容,而不是作为程序集而是作为包。如果您在 .net 核心应用程序中展开 References -> .NetCoreApp, Version=v1.0,然后展开 Microsoft.NetCore.App (1.0.0)....查看所有这些依赖项。所以它真的不是一个单一的“核心”程序集。它是一个围绕旧组件的核心。我并没有真正看到这样做的好处,它确实使您的应用程序更轻...但它仍然不是真正的核心。
    猜你喜欢
    • 2019-10-22
    • 2018-10-21
    • 2019-10-09
    • 2022-01-15
    • 2016-10-31
    • 1970-01-01
    • 2019-10-25
    • 2018-06-07
    • 2018-06-20
    相关资源
    最近更新 更多