NuGet-RID和TFM示例

NuGet-RID和TFM示例,nuget,runtime-identifier,Nuget,Runtime Identifier,我已经在GitHub上查看了NuGet3的代码,我在中看到了与NuGet包中预期的文件夹结构相关的几个文件夹模式。但是,我很难找到这些示例,特别是rid和tfm值 如何知道rid和tfm的所有可能值?我知道它们是指运行时标识符和目标框架名字对象,但我真的不知道如何处理它们 我所看到的文档似乎从未直接或详尽地处理过这个主题。我花了一些时间查看文档和代码。这个答案大部分来自代码 TargetFrameworkMonitor/tfm是使用中FrameworkIdentifiers中的一个常量构建的。它

我已经在GitHub上查看了NuGet3的代码,我在中看到了与NuGet包中预期的文件夹结构相关的几个文件夹模式。但是,我很难找到这些示例,特别是rid和tfm值

如何知道rid和tfm的所有可能值?我知道它们是指运行时标识符和目标框架名字对象,但我真的不知道如何处理它们


我所看到的文档似乎从未直接或详尽地处理过这个主题。

我花了一些时间查看文档和代码。这个答案大部分来自代码

TargetFrameworkMonitor/tfm是使用中FrameworkIdentifiers中的一个常量构建的。它是一个框架标识符,加上在末尾连接的版本。一些例子包括:

  • net451(.NET 4.5.1)
  • dotnet(最新的.NET/portable类库的一种“当前”标记)
  • uap10.0(通用Windows应用程序,版本10,本帖最新版本)
  • 本机(用于使用NuGet打包的C/C++代码。如果您打算使用此代码,还可以查看CoApp)
  • 单触式
  • 单安卓
  • 沙马林
加上您可以在上面链接的代码中找到的其他代码

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

这些措施包括:

  • win8-x86
  • win10-x64
  • win10手臂

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

目标框架目前在NuGet源代码中是硬编码的。虽然一些目标框架在上有文档记录,但也有许多未在上有文档记录。正如Jeff R已经提到的,找到目标框架的最佳方法是查看NuGet源代码

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

Microsoft定义的运行时标识符可在中找到。此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" ]
        }
    }
 }

检查。我认为它部分地回答了您的问题,至少对于tfm部分来说是这样。您知道包中是否可能包含特定于平台的.NET Framework 4.5程序集吗?某种运行时\win7-x86\lib\net45。我尝试在上述路径中打包程序集,但在使用它时VS/msbuild找不到该程序集。我可以让Visual Studio使用运行时/win-x86/lib/net47,但不能使用相同路径的win7或win10变体。