.NET(标准,核心和框架):开发跨平台应用程序

我搜索过,但我找到了很多答案,但没有针对我的问题:

正如定义所说:

  • .NET Framework 4.6是与.NET相关的一切的完整框架,但缺少针对多平台(Windows,Linux和Mac)和云部署进行优化的库和运行库
  • 另一方面,.NET Core是.NET Framework 4.6的一个子集,主要针对多平台和云部署进行了优化
  • NET标准:一组“标准”API而不是平台。 所以基本上你不关心平台,只是标准(版本1.3,1.6 ...),你的代码可以在支持它的所有平台上运行。
  • 为了开发跨平台的应用程序,我打算创建ASP.NET核心应用程序(.NET),它可能会引用其他可能使用的类库:

  • .NET标准
  • .NET核心
  • 我假设如果我使用任何(标准或核心)我的应用程序仍然会支持其他操作系统。

    在某些情况下,我看到在类库中使用.NET Standard的传统.NET Framework?

  • 在这种情况下,应用程序在使用.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": { }
      }
    

    依赖与框架有什么不同? 以及由于标准库只是一个规范,项目如何解决这些组件。


    在这种情况下,应用程序在使用.NET Framework时是否仍然跨平台?

    实际上,.Net Framework应用程序不能在.Net Core上运行。 但它可能在单声道上运行,可在Linux和Mac OS上使用。

    何时混合使用组合(标准,核心,NET)?

    如果可以的话,您应该为您的库使用.Net Standard(即只要它们没有任何特定于框架的依赖关系)。

    如果您的应用程序具有.Net Framework特定的依赖关系,或者应用程序可以是仅限Windows,则可以为您的应用程序使用.Net Framework。

    如果您的应用程序需要跨平台,或者您想使用最新的API,则可以为您的应用程序使用.Net Core。 (.Net核心通常更快,然后.Net Framework,也有预览版本。)

    框架之间使用和混合的最佳实践是什么?

    我不明白这个问题。 您不能在同一个应用程序中混合使用.Net Framework和.Net Core。

    如何避免任何冲突和建立失败?

    我不认为这是一个可回答的问题,但我可以提供一些明显的建议:

  • 阅读并遵循文档。
  • 不要使用不稳定的技术。 (请记住.Net Core工具目前仍处于预览状态。)
  • 编辑:

    依赖与框架有什么不同?

    "frameworks": { "netstandard1.5": { } }表示该库是一个.Net Standard 1.5库,并决定它可以使用哪些框架。

    "dependencies": { "NETStandard.Library": "1.6.0" }实际上"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。)

    链接地址: http://www.djcxy.com/p/81889.html

    上一篇: .NET (standard, Core and Framework): Developing Cross Platform Applications

    下一篇: .NET Standard Library vs. .NET Standard