【问题标题】:Use full .NET Framework with existing ASP.NET Core project将完整的 .NET Framework 与现有 ASP.NET Core 项目一起使用
【发布时间】:2017-03-06 04:12:26
【问题描述】:

我们有一个当前在 .NET Core 上运行的 ASP.NET Core Web 应用程序,它现在需要引用为并且只能在完整的 .NET Framework 上运行的内部库。

根据documentation:

ASP.NET Core 应用可以在 .NET Core 或完整的 .NET Framework 上运行。

...更改现有 ASP.NET Core 项目以在完整的 .NET Framework 上运行需要哪些步骤?

我似乎在文档或 Visual Studio 工具中找不到任何东西来在 .NET Core 和完整的 .NET Framework 之间切换。

【问题讨论】:

  • 您是否需要将项目类型从核心更改为完整的 .net,或者只是将 .NET Core 的引用更改为完整的框架程序集?
  • @JakubSzumiato - 只是参考,运行时框架。我想保留 ASP.NET Core 的新项目结构,并利用“用于构建 Web UI 和 Web API 的统一故事”,以及 ASP.NET Core 为我们提供的其他优势。

标签: .net asp.net-core .net-core


【解决方案1】:

我猜你在定义这个 ASP.NET Core 应用程序时必须选择正确的项目类型。选择项目类型时,您可以选择是让 .NET Core 随处运行,还是让 .NET Core 在 .NET Framework 上运行(从对话框左上角的下拉列表中选择版本) .

这些应该是新项目对话框中的不同选项。

这样,在您的引用 (project.json) 中,您将只看到所选版本的 .NET Framework 和您选择的框架依赖项(您通常添加 .NET Framework 引用作为任何其他项目类型)。

由于 Microsoft 放弃了 project.json 以支持 MSBuild xml 文件,因此该主题发生了很多事情。

Scott Hanselman 也有一篇关于这个主题的好帖子:http://www.hanselman.com/blog/HowToReferenceAnExistingNETFrameworkProjectInAnASPNETCore10WebApp.aspx

还请注意,如果您想运行在任何地方运行的 .NET Core 应用程序,则不能引用完整的 .NET Framework 库(仅限 .NET Standard)。

【讨论】:

  • 感谢您的回答。我真的很想在不重新创建项目的情况下做到这一点。不过,Scott 的博客文章读起来很有趣,很高兴看到工具如何针对这些场景进行改进。
【解决方案2】:

通过删除frameworks 中的netcoreapp1.0 部分并将其替换为net4xy 来更改您的project.json 就足够了,其中x 和y 取决于您要定位的.Net Framework 的版本,例如net461 用于 .Net 4.6.1。

例如,之前:

"frameworks": {
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.1"
      }
    },
    "imports": "dnxcore50"
}

之后:

"frameworks": {
  "net461": {}
}

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2019-04-19
    • 2016-11-08
    • 2019-10-22
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多