我搜索了SO,但我找到了很多答案,但没有针对我的问题:
如定义所述:
为了开发跨平台应用程序,我打算创建ASP.NET核心应用程序(.NET),它可能引用可能使用的其他类库:
我认为如果我使用任何(标准或核心),我的应用程序仍将支持其他操作系统。
在某些情况下,我看到人们在类库中使用传统的.NET Framework with .NET Standard?
例如,假设我有一个包含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": { }
}
依赖性如何与框架不同?以及项目如何解析程序集,因为标准库只是一个规范。
答案 0 :(得分:3)
在这种情况下,使用.NET Framework时应用程序是否仍然跨平台?
实际上,.Net Framework应用程序不会在.Net Core上运行。但它可能在单声道上运行,可在Linux和Mac OS上使用。
我应该何时混合使用组合(标准,核心,NET)?
如果可以,您应该为您的库使用.Net Standard(即,只要他们没有任何特定于框架的依赖关系)。
如果您的应用程序具有.Net Framework特定的依赖关系,或者应用程序可以仅限Windows,则可以使用.Net Framework。
如果需要跨平台,或者如果要使用最新的API,则可以将.Net Core用于您的应用程序。 (.Net Core通常比.Net Framework更快地更新,并且还有预览版本。)
框架之间使用和混合的最佳做法是什么?
我不明白这个问题。您无法在同一应用程序中混合.Net Framework和.Net Core。
如何避免任何冲突并构建失败?
我不认为这是一个值得回答的问题,尽管我可以提供一些明显的建议:
修改强>
依赖性如何与框架不同?
"frameworks": { "netstandard1.5": { } }
表示该库是.Net Standard 1.5库,并决定可以使用哪些框架。
"dependencies": { "NETStandard.Library": "1.6.0" }
实际上引入了属于.Net标准库的软件包。这也意味着该库可以访问所有的.Net标准库,而不仅仅是它的一些子集。
项目如何解析程序集,因为标准库只是一个规范?
NETStandard.Library
所依赖的软件包不仅仅是一个规范。例如,包System.IO.Compression.ZipFile
包含:
ZipFile
实现,它只是转发到System.IO.Compression.FileSystem
框架程序集ZipFile
(要自己查看包装内容,我建议NuGetPackageExplorer。)