【发布时间】:2016-09-27 09:50:06
【问题描述】:
我一直在研究可用于在新的 .NET Core 应用项目中引用现有 .NET Framework 4.6 库的选项。
作为概念证明,我构建了一个非常简单的 .NET Framework 4.6 库,将其发布为 NuGet 包并将其包含在一个简单的 .NET Core Web 应用程序中。
到目前为止,我似乎能够让项目构建和运行的唯一方法是从 project.json 依赖项块中删除 Microsoft.NETCore.App 引用,并将框架属性中的 netcoreapp1.0 部分替换为一个 net461 块。
完整的project.json如下:
{
"dependencies": {
/*"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},*/
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"FileIOLibrary_1_0_0_0": "1.0.0"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
/*"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net461"
]
}
},*/
"frameworks": {
"net461": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
这基本上意味着所有引用都是 .NET Framework 4.6 库。
无论如何,我有几个关于其他可用选项的问题:
- 是否可以指定仅我导入的库应针对 .NET 4.6 Framework,而所有其他引用应使用 .NET 核心?如果是这样,这意味着我可以将 Microsoft.NETCore.App 引用添加回项目中。
- 如果上述方法不可行,我是否可以将我的库重建为兼容的 .NET 标准库(我相信 1.6 版在 Framework 4.6 和 Core 1.0.0 之间兼容)?我一直无法在 Visual Studio 中看到允许我针对 .NET 标准构建库的选项,因此如果可以选择,我将不胜感激。
【问题讨论】:
-
一个 nuget 包可以针对多个框架,但您必须为每个框架(.NET 462 和 .NET Core)构建一个解决方案,然后将它们打包在一起。我在这里做的打包在一起(我使用的是 NET452 但这是同样的问题):github.com/brainwipe/NJsonApiCore/blob/master/Package.nuspec 有帮助吗?
-
如果我的思路正确,我可以把它写成答案,我不能 100% 确定你想要达到的目标!
-
你好罗。实际要求是看看我们是否可以构建引用一些旧的 .NET Framework 程序集的 .NET 核心应用程序。最好不必重新编译我们的库(如我上面的示例),但仍保留尽可能多的核心功能(尽管我很清楚引用任何 .NET 框架库将意味着使用 .NET 的好处核心将不可用)。失败的首选是重新编译库以确保它们与 .NET 标准 1.6 兼容,尽管我不确定您实际上是如何管理它的。
-
好的,我明白了,我会写下我的答案。 (当我这样做时,答案是否定的,你不能)
标签: c# .net .net-core .net-4.6