c# - ASP.Core 中的 .NET 版本

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

我有一个 ASP 核心网络应用程序

  "frameworks": {
    "net452": {}
  },

我还有类库 (.NET Core)。

{
  "version": "1.0.0-*",
  "frameworks": {
    "netstandard1.5": {
      "dependencies": {
        "NETStandard.Library": "1.6.0"
      },
      "net452": {}
    }
  }
}

问题是,如何将 Web 应用程序项目引用添加到类库中?我应该导入一些 .net 框架还是使用 .net 标准?

现在我在尝试添加对类库项目的引用时收到错误消息。

The following projects are not supported as references: "webprojectname" has target frameworks that are incompatible with targets in current project "classlibraryprojectname"

"classlibraryprojectname": .NETCoreApp, Version=v1.0 "webprojectname": .NETFramework, Version=v4.5.2

最佳答案

编辑:根据问题的变化进行了更新。

所以我不会一直填写评论部分,您的 project.json 应该如下所示:

Web 应用(您还将拥有此处未显示的其他依赖项):

"dependencies": {
  "YourClassLibrary": "1.0.0-*"
},
"frameworks": {
  "net452": { }
}

类库:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0" 
  },

  "frameworks": {
    "netstandard1.2": { }
  }
}

注意:如果您的类库依赖于高于 netstandard1.2 的东西,那么您将不得不在您的网络应用程序中增加 .Net Framework 以匹配 NETSTandard 你正在使用(按照之前的 linked docs ),或者你需要像这样交叉编译类库:

{
  "version": "1.0.0-*",

  "frameworks": {
    "netstandard1.5": {
      "dependencies": {
        "NETStandard.Library": "1.6.0" 
      }
    },
    "net452": { }
  }
}

使用第一个建议,您的应用程序为您的类库生成一个程序集,使用第二种方法您的类库将被编译两次(一次用于 netstandard1.5,一次用于 net452)。当您的 Web 应用程序尝试解析类库时,它意识到它不能使用 netstandard1.5(目标为 net462),因此回退到 net452 组装。但是请注意,使用第二个选项通常表示您的项目结构不正确,并且只有在您知道自己在做什么以及为什么(在我看来)时才应使用。

NETStandard.Library显示的依赖项是必不可少的 NuGet bundle,它可以拉下必要的 CoreFX 包。如果您收到“找不到 Microsoft.CSharp”之类的错误,通常是因为您没有下载默认包。您可以改为仅下拉所需的 CoreFX 包,例如 System.Collections但这是一种更高级的技术。

希望这有助于解决问题?

关于c# - ASP.Core 中的 .NET 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39766261/

相关文章:

c# - 具有多个 OR 条件的 EF core 连接

c# - C#中如何根据层级接口(interface)初始化对象

asp.net - User.Identity.Name 为空?

javascript - 动态创建的单选按钮不显示选中的 ASP.NET

ASP.NET MVC 希望我将 SQL Server 数据库文件存储在 App_Data 文件夹中 - 应该吗?

c# - 是否可以通用地实现这个接口(interface),以便它只能传递一个类型参数?

c# - 反射发出堆栈和方法调用

c# - 如何从 WPF 窗口创建缩略图并将其转换为 bytes[] 以便我可以保留它?

c# - 如何在 Windows 应用程序中双向绑定(bind)对象到组合框

.net - 在 Monotouch 上模拟 .NET 的框架?