Нужна помощь в создании пакета NuGet.
У нас есть сторонний управляемый dll на C # (назовите его «Managed.dll»), который каким-то образом использует / reference / wraps сторонних библиотек x86 и x64 для собственных программ (назовем их обоих «Unmanaged.dll») в зависимости от машины времени выполнения.
Managed.dll знает, как найти соответствующий Unmanaged.dll, если папки x86 и x64 находятся в одном каталоге, например:
Я могу сделать пакет, как:
Открыв пакет, я вижу, что файлы находятся в нужных местах, поэтому они включены.
Я также могу вручную «установить» его, поместив пакет в каталог пакетов, добавив ссылку на Managed.dll в csproj, а затем событие перед сборкой копирует битовые каталоги и dll в соответствующие места при сборке проекта и все это работает и т. д. Но теперь мы пытаемся сделать dll более легко распространяемым с помощью NuGet. Кроме того, если я добавляю строку для пакета в файл packages.config и удаляю папку пакетов, пакет повторно извлекается, и он все еще работает.
Однако, если я пытаюсь установить с помощью диспетчера пакетов NuGet, он пытается найти Unmanaged.dll. Результат установки PM:
Попытка собрать информацию о зависимостях для пакета «MyPackage.3.0.0» относительно проекта «MyProject» с таргетингом на .NETFramework, Version = v4.5.2 ‘
Сбор информации о зависимости занял 3,51 мс
Попытка разрешить зависимости для пакета «MyPackage.3.0.0» с DependencyBehavior «Lowest»
Разрешение информации о зависимости заняло 0 мс
Разрешение действий для установки пакета «MyPackage.3.0.0»
Решенные действия для установки пакета «MyPackage.3.0.0»
Получение пакета «MyPackage3.0.0» из «MySource».
Добавление пакета «MyPackage.3.0.0» в папку «C: \ MyProject \ packages»
Добавлен пакет «MyPackage.3.0.0» в папку «C: \ MyProject \ packages»
Установка не удалась. Откат…
Пакет «MyPackage.3.0.0» не существует в проекте «MyProject»
Удаление пакета «MyPackage.3.0.0» из папки «C: \ MyProject \ packages»
Удален пакет «MyPackage.3.0.0» из папки «C: \ MyProject \ packages»
Выполнение действия nuget заняло 895,64 мс
Пакет установки: не удалось добавить ссылку на «Неуправляемый».
Убедитесь, что файл доступен, и что он является допустимой сборкой или компонентом COM.
В строке: 1 символ: 1
+ Install-Package MyPackage -source MySource
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [Install-Package], исключение
+ FullyQualifiedErrorId: NuGetCmdletUnhandledException, NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Я попытался добавить каталог сборки в пакет с файлом «Unmanaged.props», но возникает та же ошибка. Я попытался поместить ‘Unmanaged.dll’ на тот же уровень, что и ‘Managed.dll’ в пакете.
Итак, пожалуйста, скажите мне, почему он не может найти ‘Unmanaged.dll’ (для моего собственного назидания) и что мне нужно сделать, чтобы он работал правильно (может понадобиться какое-то удержание руки, чтобы пройти через него). Нужны ли мне цели? Кастомный install.ps1?
Я использую VS2015 и NuGet 3.5
Является это все еще так? Если да, может кто-нибудь объяснить, как заставить 2 пакета играть вместе?
Эта ссылка кажется, говорит, что управляемый и неуправляемый может быть в одном пакете.
Спасибо
У меня только что была эта проблема. Я должен был добавить раздел ссылок в файл .nuspec, в котором я ТОЛЬКО перечислил мои управляемые DLL. Это, кажется, помогает VS расслабиться и не пытаться добавить ссылку на неуправляемую DLL.
Других решений пока нет …