我有一个 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/