. net版本中的asp.net core

本文关键字:net core asp 版本 | 更新日期: 2023-09-27 18:09:19

我有一个asp核心web应用程序

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

,我也有类库(。网络核心)。

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

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

现在我有一个错误消息,当我试图添加引用类库项目。

不支持以下项目作为参考:"webprojectname"的目标框架不兼容当前项目中的目标"classlibraryprojectname"

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

. net版本中的asp.net core

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

所以我不继续填写评论部分,你的project.json应该是这样的:

Web App (你还会有其他没有在这里显示的依赖项):

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

类库:

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

注意:如果你的类库依赖于高于netstandard1.2的东西,那么你要么必须在你的web应用程序中增加。net框架,以匹配你正在使用的NETSTandard(按照以前链接的文档),或者你需要交叉编译类库,像这样:

{
  "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 ,它拉下必要的CoreFX包。如果出现"无法找到Microsoft。"这通常是因为你没有拉下默认包。相反,您可以只拉下您想要的CoreFX包,例如System.Collections,但这是一种更高级的技术。

希望这有助于澄清问题?