Я создал проект привязки Xamarin.iOS, добавив UnityFramework.framework
как Native References
. Когда я создаю этот проект привязки, он создает файл .dll. Теперь я хочу сгенерировать Nuget package
, и для моего реального проекта мне нужно добавить этот пакет nuget вместо DLL. Я прочитал это, но не понял, как применить его к моему существующему проекту привязки. Пожалуйста, помогите мне, как создать пакет nuget из моего проекта biding. Большое тебе спасибо.
@PaulSinnema Это .Net 4.7
Вы можете сделать это, используя файл nuspec следующим образом:
%NUGET_EXE_PATH% pack YourApplication.nuspec -version 1.0.0.0 -Properties Configuration=Release
Файл nuspec выглядит примерно так:
<?xml version = "1.0"?>
<package xmlns = "http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>YourApplicationName</id>
<version>1.0.0.0</version>
<title>Title</title>
<authors>Author</authors>
<owners/>
<licenseUrl>https://yoururl.com</licenseUrl>
<projectUrl>https://yoururl.com</projectUrl>
<iconUrl>file://YourProgram_Icon.ico</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Your description</description>
<releaseNotes/>
<copyright>Your copyright notice</copyright>
<tags/>
<dependencies>
<dependency id = ""/>
</dependencies>
<summary/>
</metadata>
<files>
<file src = "..\InstallDir\YourApplication.exe" target = "YourApplication.exe"/>
<file src = "..\InstallDir\Library1.dll" target = "Library1.dll"/>
<file src = "..\InstallDir\library2.dll" target = "Library2.dll"/>
</files>
</package>
что нужно указать для src и target под файлами?
Изменил пост. Забыл изменить цель на YourApplication.exe
. В target вы объявляете, где файл хранится в структуре каталогов окончательного пакета nuget. Файл пакета nuget по сути является zip-файлом. Измените расширение с .nuget
на .zip
, и вы сможете разархивировать его.
В моем случае у меня нет файла .exe, только .dll, который создается при создании проекта привязки.
Nuget только создает пакет. Другое дело, как вы его разместите. В нашей организации все пакеты развертываются с помощью Octopus. Octopus распаковывает его для нас и кладет в место, где он может бегать. Вам не нужно добавлять .exe, если это не нужно.
Другой вопрос: следует ли добавлять отладочную версию или версию DLL в пакет nuget? Я добавил выпускную версию, и она очень маленькая, а моя отладочная версия DLL составляет около 21 МБ.
Вы собираетесь использовать это для производства в конце концов? Если это так, вы должны использовать версию выпуска. Вы разрабатываете для предприятия или просто частный? В релизной версии включена оптимизация кода и нет возможности отладки. Затем вам придется полагаться на ведение журнала для оценки ошибок.
Да, я собираюсь использовать это в производстве в конце
Я создал пакет nuget, включая мою выпускную версию DLL. Затем я установил его в свой проект xamarin.iOS. Но я не могу получить доступ к пакету nuget в своем коде. Невозможно импортировать его с помощью инструкции в моем классе. Знаете ли вы причину этого?
Я не думаю, что это способ развертывания на iOS. Посмотрите в документации, как это сделать: docs.microsoft.com/en-us/xamarin/ios/развертывание-тест
Я пытаюсь запустить проект, включенный в пакет nuget, на своем собственном устройстве. Не создавать сборку для распространения.
Как я сказал ранее. Я не думаю, что вы можете использовать для этого пакет Nuget. Вам нужно развернуть, как описано в статье.
Я уже добавил пакет nuget в качестве ссылок на свои старые проекты. Но эти пакеты созданы не мной
На самом деле вы не добавляете ссылку на пакет Nuget в свой проект, а указываете на библиотеку/библиотеки в пакете. Пакет Nuget распаковывается и сохраняется в каталоге Packages внутри каталога вашего решения. Вы можете просто добавить ссылку на свою собственную библиотеку в свой проект. Во время развертывания эта библиотека будет развернута вместе с вашим приложением.
Спасибо за объяснение. В моей папке пакета нет распакованной и сохраненной папки пакета nuget. И в project.assets.json есть только это для моего пакета nuget «ABC.SDK/1.0.0»: { «type»: «package» },
Это .Net 6.0? Вы можете использовать для этого команду dotnet
dotnet publish --output publish --configuration release