解决错误"Microsoft.NETCore.App 1.0.0不支持框架.NETFramework, Version=v4.6.1"

13
我有一个完整的ASP.NET Core 1.0应用程序,使用net461引用运行。现在我正在尝试添加另一个框架-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"
},

添加完这个代码块后,我遇到了另一个错误:

Code: NU1002 Description: 依赖项 Microsoft.NETCore.App 1.0.0 不支持框架 .NETFramework,Version=v4.6.1。

基本上,我想在我的应用程序中同时添加对 .NET Framework 4.6.1 和 ASP.NET Core 1.0 的引用。

我该如何解决这个错误?


你可以看一下我的答案,希望能有所帮助。 http://stackoverflow.com/a/39420980/6535426 - Hung Cao
2个回答

13

使用.NET Framework或.NET Core构建ASP.NET Core项目是完全可行的。您已经非常接近成功-只需要进行一些微调:

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

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 部分已被弃用,可以删除。


1

我通过以下方式将 .net core 类库引用到 .net 4.6.1 中。

之前,在尝试从 .net 4.6.1 引用 .net core 时,我遇到了以下错误:

enter image description here

解决方法:

原始代码:

    {
    "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" ]
    }
   }

"Corrected"(已更正)
    {
     "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 真是一团糟。所以,当他们说.NetCore时,你仍然必须正确引用所有内容,不是作为程序集,而是作为一个包来引用。如果在.NET Core应用程序中扩展References -> .NetCoreApp,Version=v1.0,然后展开Microsoft.NetCore.App(1.0.0)......看看那里的所有依赖项。所以它实际上并不是一个单一的“核心”程序集。它是一个包装在旧程序集周围的Core。我真的看不出这有什么好处,虽然它确实使您的应用程序更轻巧......但仍然不是真正的Core。 - chdev77

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接