2016-11-30 3 views
3

Я создал библиотеку .netstandard 1.2, которая совместима с .net 4.5.2. В моей библиотеке я ссылка NetStandard.Library 1,6:с использованием библиотеки .netstandard 1.2 в 4.5.2

{ 
    "version": "1.0.0-*", 
    "dependencies": { 
     "NETStandard.Library": "1.6.1" 
    }, 

    "frameworks": { 
     "netstandard1.2": { } 
    } 
} 

Я создал пакет NuGet из этого, используя Dotnet пакета и установил его на моем сервере NuGet. Я создал простое консольное приложение, предназначенное для .NET Framework 4.5.2. Я стараюсь устанавливать выше пакет NuGet и я получаю огромный список зависимостей, которые он должен установить:

Microsoft.NETCore.Platforms.1.1.0 
System.Collections.4.3.0 
System.Collections.Concurrent.4.3.0 
... snip 
NETStandard.Library.1.6.0 
MyPackage.1.0.0 

Я предполагаю, что причина, я вижу все эти пакеты, потому что я завишу от метапакет NETStandard.Library, но есть ли способ установить это в полный проект .net framework 4.5.2 без добавления всех этих пакетов? Должен ли я просто добавить инфраструктуру net452 в свою библиотеку, хотя у меня нет какой-либо условной компиляции, которую мне нужно выполнить?

+0

Вы можете взаимодействовать с DllImport в исполняемый файл или DLL, которая не требует зависимостей. – jdweng

+0

@jdweng это совсем не то, что я ищу. – Dismissile

+0

Я понял, что если бы мы использовали базовый пакет nugetpackage в полной библиотеке .net (net4.5/46/461), то это таргетинг на эту инфраструктуру под 'framework {}' в файле 'project.json'. Таким образом, он должен иметь 'net542' в разделе фреймворков. – Jaya

ответ

4

Если вы внимательно посмотрите, что пакет System.Collections не должен содержать DLL-файлы для .net full framework. Я полагаю, что вместо этого он просто ссылается на System.Collections в качестве ссылки на структуру. Вы по-прежнему получаете почти пустой пакет nuget, потому что у вас есть зависимость от пакета NETStandard.Library и который определяет различные атрибуты api, необходимые для реализации библиотеки. Дополнительные пакеты не должны на самом деле ничего делать в полной структуре.

Если это вас беспокоит (для меня это не так) Вы можете обойти это, более подробно о своих зависимостях.

Например:

{ 
    "version": "1.0.0-*", 

    "frameworks": { 
     "net452" : {}, 
     "netstandard1.2": { 
     "dependencies": { 
      "NETStandard.Library": "1.6.1" 
     }, 
     } 
    } 
} 
0

В моем понимании, если мы должны были использовать ядро ​​nugetpackage в полной .net (NET4.5/451/452/46/461) Lib - один должен предназначаться эту конкретную структуру под framework{} в файле project.json.

Таким образом, он должен иметь net542 в разделе рамки. Напр. Библиотека dapper (ORM), совместимая с полной картой и сетью .net, имеет проект project.json со всеми инфраструктурами, которые он нацеливается следующим образом: https://github.com/StackExchange/dapper-dot-net/blob/61e965eed900355e0dbd27771d6469248d798293/Dapper/project.json. Поэтому, исходя из моего понимания, я мог бы ссылаться на dapper как на основные, так и на сетевые приложения .net.

+0

Это неправда. .net 4.5.2 реализует netstandard1.2. Это, по сути, следующая итерация портативных библиотек классов. Если мне не нужно использовать функции из полной .net-структуры, тогда мне не нужно настраивать ее. Я могу установить пакет netstandard1.2 в свое приложение 4.5.2, моя единственная проблема - увидеть огромный список зависимостей, которые добавляются из-за этого. – Dismissile

+0

Правда, я могу ошибаться: (_, но я был под тем же впечатлением, читая их документы, которые сказали, что '.net 4.5.1' реализует' netstandard1.2' здесь https://docs.microsoft.com/en-us/dotnet/articles/standard/library и т. д., но столкнулся с аналогичной ситуацией, когда я создал свою Lib и загрузил ее на нашем ProGet Server, который будет использоваться на всех платформах, и когда я добавлю его в .net framework lib, это было пытаясь загрузить System.Collections и т. д., и потребовал когда-либо сбой VS, поэтому затем нацелился на эту фреймворк и загрузил новый pkg, я тоже не видел то же самое, поэтому предложил то же самое. Прошу прощения, если ошибаюсь – Jaya

+0

, если библиотека нацелена на netstandard1 .2 вы можете использовать его в любом .net 4.5.1+ apps – TerribleDev

Смежные вопросы