ASP.Core中的.NET版本

时间:2016-09-29 09:17:42

标签: 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标准?

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

  

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

     

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

2 个答案:

答案 0 :(得分:0)

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

所以我不会继续填写评论部分,你的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 Framework以匹配您正在使用的NETSTandard(根据以前linked docs),或者你需要像这样交叉编译类库:

{
  "version": "1.0.0-*",

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

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

显示的NETStandard.Library依赖关系是必需的NuGet bundle ,它可以提取必要的CoreFX包。如果您收到“无法找到Microsoft.CSharp”这样的错误,通常是因为您没有下拉默认包。您只能下拉所需的CoreFX软件包,例如System.Collections,但这是一种更高级的技术。

希望这有助于清理事情?

答案 1 :(得分:-1)

net45替换为您已安装的net461"version": "1.0.0-*""version": "1.0.1"更新DateTime。保存更改。你已经完成了。

注意:无法使用.Net核心类库定义模型。其他一切都还可以!