我搜索了SO,但我找到了很多答案,但没有针对我的问题:
正如定义所说:
-
.NET Framework 4.6是与.NET相关的所有内容的完整框架,但缺少针对多平台(Windows,Linux和Mac)和 Cloud 部署进行优化的库和运行时
另一方面,.NET Core是.NET Framework 4.6的一个子集,主要针对多平台和 Cloud 部署进行了优化 -
NET标准:一组API而不是一个平台 . 所以基本上你不关心平台,只关注标准(版本1.3,1.6 ......),你的代码将适用于支持它的所有平台 .
为了开发跨平台应用程序,我打算创建ASP.NET核心应用程序(.NET),它可能引用可能使用的其他类库:
-
.NET标准版
-
.NET Core
我假设如果我使用任何(标准或核心),我的应用程序仍将支持其他操作系统 .
在某些情况下,我看到人们在类库中使用传统的.NET Framework with .NET Standard?
-
在这种情况下,使用.NET Framework时应用程序是否仍然跨平台?
-
我应该何时混合使用组合(标准,核心,NET)?
-
框架之间使用和混合的最佳实践是什么?
-
如何避免任何冲突并构建失败?
例如,假设我有一个具有project.json的类库:
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "1.0.0",
"Microsoft.Extensions.Options": "1.0.0",
"StackExchange.Redis.StrongName": "1.1.608",
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.5": { }
}
依赖性如何与框架不同?以及项目如何解析程序集,因为标准库只是一个规范 .
1 回答
实际上,.Net Framework应用程序不会在.Net Core上运行 . 但它可能运行在单声道上,可在Linux和Mac OS上使用 .
如果可以,您应该为您的库使用.Net Standard(即,只要它们没有任何特定于框架的依赖项) .
如果应用程序具有.Net Framework特定的依赖关系,或者应用程序可以仅限Windows,则可以将.Net Framework用于您的应用程序 .
如果需要跨平台,或者如果要使用最新的API,则可以将.Net Core用于您的应用程序 . (.Net Core通常比.Net Framework更新更快,并且还有预览版本 . )
我不明白这个问题 . 您不能在同一个应用程序中混用.Net Framework和.Net Core .
虽然我可以提出一些明显的建议,但我认为这不是一个值得回答的问题:
阅读并遵循文档 .
不要使用不稳定的技术 . (请记住.Net Core工具目前仍在预览中 . )
EDIT:
"frameworks": { "netstandard1.5": { } }
表示该库是.Net Standard 1.5库,并决定可以使用哪些框架 ."dependencies": { "NETStandard.Library": "1.6.0" }
实际上引入了属于.Net标准库的软件包 . 这也意味着该库可以访问所有的.Net标准库,而不仅仅是它的一些子集 .NETStandard.Library
所依赖的软件包不仅仅是一个规范 . 例如,包System.IO.Compression.ZipFile
包含:用于编译的参考组件(即规范)
实现
ZipFile
for .Net Framework 4.6,它只是转发到System.IO.Compression.FileSystem
框架程序集实现
ZipFile
的.Net Core的实现
(要自己查看包装内容,我建议使用NuGetPackageExplorer . )