NuGet - RID和TFM示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NuGet - RID和TFM示例相关的知识,希望对你有一定的参考价值。

我一直在GitHub上查看NuGet3的代码,我在https://github.com/NuGet/NuGet3/blob/a5bc907d36ddaa8d4fa6c499e50d7ebf8993ed39/src/NuGet.Client/ManagedCodeConventions.cs中看到了与NuGet包中预期的文件夹结构相关的几个文件夹模式。但是,我很难找到这些的例子 - 特别是rid和tfm值。

我如何知道rid和tfm的所有可能值?我知道他们的意思是运行时标识符和目标框架Moniker,但我真的不知道如何处理它。

我见过的文档似乎从未直接或详尽地处理该主题。

答案

目标框架目前在NuGet源代码中进行了硬编码。虽然NuGet website记录了一些目标框架,但有许多目标框架没有记录在那里。因此,当Jeff R已经提到找到目标框架的最佳方法时,目前要查看NuGet源代码。

NuGet还为其中一些框架(例如wp = WindowsPhone)提供了short identifiers

Microsoft定义的运行时标识符可在Microsoft.NETCore.Platforms NuGet package中找到。在这个NuGet包中是一个带有运行时标识符的runtime.json文件:

{
    "runtimes": {
        "base": {
        },

        "any": {
            "#import": [ "base" ]
        },

        "win": {
            "#import": [ "any" ]
        },
        "win-x86": {
            "#import": [ "win" ]
        },
        "win-x64": {
            "#import": [ "win" ]
        },

        "win7": {
            "#import": [ "win" ]
        },
        "win7-x86": {
            "#import": [ "win7", "win-x86" ]
        },
        "win7-x64": {
            "#import": [ "win7", "win-x64" ]
        },

        "win8": {
            "#import": [ "win7" ]
        },
        "win8-x86": {
            "#import": [ "win8", "win7-x86" ]
        },
        "win8-x64": {
            "#import": [ "win8", "win7-x64" ]
        },
        "win8-arm": {
            "#import": [ "win8" ]
        },

        "win81": {
            "#import": [ "win8" ]
        },
        "win81-x86": {
            "#import": [ "win81", "win8-x86" ]
        },
        "win81-x64": {
            "#import": [ "win81", "win8-x64" ]
        },
        "win81-arm": {
            "#import": [ "win81", "win8-arm" ]
        },

        "win10": {
            "#import": [ "win81" ]
        },
        "win10-x86": {
            "#import": [ "win10", "win81-x86" ]
        },
        "win10-x64": {
            "#import": [ "win10", "win81-x64" ]
        },
        "win10-arm": {
            "#import": [ "win10", "win81-arm" ]
        },


        "aot": {
            "#import": [ "any" ]
        },

        "win-aot": {
            "#import": [ "win", "aot" ]
        },
        "win-x86-aot": {
            "#import": [ "win-aot", "win-x86" ]
        },
        "win-x64-aot": {
            "#import": [ "win-aot", "win-x64" ]
        },

        "win7-aot": {
            "#import": [ "win-aot", "win7" ]
        },
        "win7-x86-aot": {
            "#import": [ "win7-aot", "win7-x86" ]
        },
        "win7-x64-aot": {
            "#import": [ "win7-aot", "win7-x64" ]
        },

        "win8-aot": {
            "#import": [ "win8", "win7-aot" ]
        },
        "win8-x86-aot": {
            "#import": [ "win8-aot", "win8-x86", "win7-x86-aot" ]
        },
        "win8-x64-aot": {
            "#import": [ "win8-aot", "win8-x64", "win7-x64-aot" ]
        },
        "win8-arm-aot": {
            "#import": [ "win8-aot", "win8-arm" ]
        },

        "win81-aot": {
            "#import": [ "win81", "win8-aot" ]
        },
        "win81-x86-aot": {
            "#import": [ "win81-aot", "win81-x86", "win8-x86-aot" ]
        },
        "win81-x64-aot": {
            "#import": [ "win81-aot", "win81-x64", "win8-x64-aot" ]
        },
        "win81-arm-aot": {
            "#import": [ "win81-aot", "win81-arm", "win8-arm-aot" ]
        },

        "win10-aot": {
            "#import": [ "win10", "win81-aot" ]
        },
        "win10-x86-aot": {
            "#import": [ "win10-aot", "win10-x86", "win81-x86-aot" ]
        },
        "win10-x64-aot": {
            "#import": [ "win10-aot", "win10-x64", "win81-x64-aot" ]
        },
        "win10-arm-aot": {
            "#import": [ "win10-aot", "win10-arm", "win81-arm-aot" ]
        }
    }
 }
另一答案

我花了一些时间来查看文档并查看代码。大多数答案来自代码。

TargetFrameworkMoniker / tfm是使用FrameworkConstants.cs中FrameworkIdentifiers中的一个常量构造的。它是一个框架标识符,加上最后连接的版本。一些例子包括:

  • net451(.NET 4.5.1)
  • dotnet(最新.NET /便携式类库的“当前”标记)
  • uap10.0(通用Windows应用程序,版本10,最新版本)
  • native(用于使用NuGet打包的C / C ++代码。如果您打算使用这个,请查看CoApp)
  • MonoTouch的
  • Monoandroid
  • Xamarin.ios

您可以在上面链接的代码中找到其他人。

对于运行时标识符,它们由某种操作系统标识符和体系结构组成。所以,在JsonRuntimeFormatTests.cs你可以找到一些例子。

这些包括:

  • win8的-86
  • win10-64
  • win10-差
  • 等等

这些信息帮助我构建了一个使用runtimes文件夹的NuGet包,因为我很难知道可能的值是什么。我希望它可以帮助别人。

以上是关于NuGet - RID和TFM示例的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core Automapper的Nuget安装和配置以及demo示例代码

物理应用基于matlab全矩阵数据TFM成像含Matlab源码 1940期

在 Xamarin.Forms 中使用 Acr.XamForms Nuget 访问相机和图库的示例代码 [关闭]

如何找出软件挂起的原因? (qemu + zephyr + tfm 的问题)

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

JqG​​rid 如何更改编辑表单的宽度?