2015-09-21 3 views
2

Я просматривал код для NuGet3 на GitHub, и я вижу несколько шаблонов папок в https://github.com/NuGet/NuGet3/blob/a5bc907d36ddaa8d4fa6c499e50d7ebf8993ed39/src/NuGet.Client/ManagedCodeConventions.cs, связанных с ожидаемыми структурами папок в пакете NuGet. Тем не менее, мне трудно найти какие-либо примеры из них - в частности, значения rid и tfm.Примеры NuGet - RID и TFM

Как я могу узнать все возможные значения для rid и tfm? Я знаю, что они означают Runtime Identifier и Target Framework Moniker, но я не знаю, что с этим делать.

Документация, которую я видел, кажется, никогда не затрагивает тему напрямую или исчерпывающе.

+0

Check [Поддержка нескольких версий .NET Framework и профили] (http://docs.nuget.org/create/enforced-package-conventions). Я думаю, что он частично отвечает на ваш вопрос, по крайней мере, для части tfm. – Matthieu

ответ

0

Я потратил некоторое время на рассмотрение документов и просмотр кода. Большая часть этого ответа исходит из кода.

TargetFrameworkMoniker/tfm строится с использованием одной из констант из FrameworkIdentifiers в FrameworkConstants.cs. Это идентификатор структуры, плюс версия, конкатенированная в конце. Некоторые примеры включают в себя:

  • net451 (.NET 4.5.1)
  • DotNet (своего родом "текущих" метки для последних .NET/портативных библиотек классов)
  • uap10.0 (Universal приложений Windows , для версии 10, последний в этой должности)
  • родной (для кода C/C++ упаковываются с использованием NuGet. также обратите внимание на CoApp, если вы собираетесь использовать этот)
  • MonoTouch
  • MonoAndroid
  • Xamarin.iOS

Плюс другие вы можете найти в коде, приведенном выше.

Для идентификаторов времени выполнения они состоят из идентификатора операционной системы, а также архитектуры. Итак, в JsonRuntimeFormatTests.cs вы можете найти несколько примеров.

К ним относятся:

  • win8-x86
  • win10-x64
  • win10-рука
  • и т.д.

Эта информация помогла мне структурировать пакет NuGet, который использует , так как я изо всех сил пытался понять, каковы возможные значения. Надеюсь, это поможет кому-то другому.

1

Целевые рамки в настоящее время жестко закодированы в исходном коде NuGet. Хотя некоторые целевые структуры документированы на NuGet website, многие из них не документированы. Так как Jeff R уже упомянул, лучший способ найти целевые фреймворки в настоящее время - посмотреть исходный код NuGet.

NuGet также имеет short identifiers для некоторых из этих структур (например,wp = WindowsPhone).

Идентификаторы времени выполнения, определенные 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" ] 
     } 
    } 
}