Hus*_*man 5 .net .net-core .net-standard
我已经搜索过SO,但是我找到了很多答案,但没有针对我的问题:
正如定义所说:
为了开发跨平台应用程序,我打算创建ASP.NET核心应用程序(.NET),该应用程序可能引用其他可能使用的类库:
我假设如果我使用任何(标准或核心)应用程序仍将支持其他操作系统。
在某些情况下,我看到人们在类库中使用带有.NET Standard的传统.NET Framework吗?
例如,假设我有一个包含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": { }
}
Run Code Online (Sandbox Code Playgroud)
依赖性与框架有何不同?以及标准库只是一个规范,项目如何解决装配问题。
在这种情况下,使用.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.Net Framework 4.6的实现,仅转发到System.IO.Compression.FileSystem框架程序集ZipFile(要亲自查看包内部,我推荐NuGetPackageExplorer。)
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |