создание nuget: невозможно упаковать DLL, на которые есть ссылки

Я пытаюсь создать nuget с помощью «Nuget Package Explorer». Проект ссылается на 2 библиотеки DLL, предназначенные для целевого файла .net4.0, и для основной целевой библиотеки .net4.5.

Как указано, я поместил 2 библиотеки DLL, на которые есть ссылки, в папку внутри папки «lib» с именем «net40», основную dll в папку с именем «net45», затем я нажал на nuget, который находится здесь

Но когда я пытаюсь установить его в другом проекте, он не требует никаких dll!

Я делаю что-то неправильно ?

Спасибо.

ОБНОВЛЕНИЕ:

Пакет nuget содержит:

lib (folder)
    net45 (folder)
        MainAssembly.dll -> targets .net_4.5
        Microsoft.VisualStudio.TextTemplating.10.0 -> targets .net_4
        Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 -> targets .net_4

Примечания:

  • MainAssembly нужны две другие сборки
  • Я просто хочу настроить таргетинг на .net версии 4.5

эта проблема :

создание пакета nuget с использованием приведенной выше структуры не работает, при установке nuget в новый проект MainAssembly не добавляется в список ссылок, добавляются только две другие сборки.


person dafriskymonkey    schedule 09.05.2015    source источник


Ответы (1)


Проект ссылается на 2 библиотеки DLL, предназначенные для целевого файла .net4.0, и для основной целевой библиотеки .net4.5.

Как указано, я поместил 2 библиотеки DLL, на которые есть ссылки, в папку внутри папки «lib» с именем «net40», основную dll в папку с именем «net45», затем я нажал на nuget, который находится здесь

Пакет NuGet может быть нацелен на несколько версий платформы .NET. Однако проект .NET не может.

Ваши зависимые сборки должны быть помещены в ту же папку версии .NET framework, чтобы их можно было установить в целевой проект. Итак, если вы хотите, чтобы ваш пакет NuGet был ориентирован на 4.0 и 4.5, структура должна выглядеть так:

lib
    net40
        MainAssembly.dll
        DependentAssembly1.dll
        DependentAssembly2.dll
    net45
        MainAssembly.dll
        DependentAssembly1.dll
        DependentAssembly2.dll

Основная сборка в каждой группе должна быть нацелена на ту же версию платформы, что и родительская папка. Зависимые сборки могут быть нацелены на любую версию, такую ​​же или более раннюю, чем целевая версия.

Обратите внимание, что обычно каждая сборка упаковывается как отдельный пакет NuGet, и пакеты NuGet зависят друг от друга, а не помещают зависимые сборки в один и тот же пакет.

person NightOwl888    schedule 09.05.2015
comment
спасибо, я понял вашу точку зрения. но теперь, когда я помещаю все dll в папку v45, он тоже работает, nuget будет захватывать только зависимые сборки, а не основную. - person dafriskymonkey; 12.05.2015
comment
обратите внимание, что в моем случае: mainassembly.dll нацелена на 4.5, а две зависимые сборки - на 4.0. помещать их все в один и тот же 4.5, похоже, не работает. - person dafriskymonkey; 12.05.2015
comment
Ваша основная сборка должна быть нацелена на версию 4.0 (или ниже), чтобы ее можно было поместить в папку net40, иначе ее нельзя будет установить в целевой проект версии 4.0. В папке net45 он может быть нацелен на v4.5. См. этот пост о настройке проекта на сборку для нескольких версий .NET framework. Обратите внимание, что в вашем вопросе неясно, какую версию .NET framework использует ваш целевой проект (проект, в который вы установите этот пакет NuGet), и именно здесь эти папки вступают в игру. - person NightOwl888; 12.05.2015
comment
извините за непонятность, я добавил обновление к вопросу. - person dafriskymonkey; 14.05.2015