Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Универсальная платформа Windows (UWP) предоставляет единую платформу приложений для всех устройств с операционной системой Windows 10. В этой модели приложения UWP могут вызывать как интерфейсы API WinRT, общие для всех устройств, так и интерфейсы API (включая Win32 и .NET), относящиеся только к семейству устройств, на которых работает приложение.
В этом пошаговом руководстве вы создадите пакет NuGet с компонентом UWP на C# (включая элемент управления XAML), который можно использовать как в управляемых, так и в собственных проектах.
Необходимые компоненты
Visual Studio 2019. Установите выпуск Community 2019 бесплатно из visualstudio.com. Вы также можете использовать выпуски Professional и Enterprise.
Интерфейс командной строки NuGet. Скачайте последнюю версию
nuget.exeиз nuget.org/downloads и сохраните средство в выбранном расположении. (Скачивание — это файл напрямую.exe.) Добавьте расположение файла средства в переменную среды PATH, если это еще не так. Дополнительные сведения см. в разделе "Установка nuget.exe".
Создание компонента среды выполнения Windows для UWP
В Visual Studio выберите файл > нового > проекта и выполните поиск по запросу uwp c#. Выберите шаблон компонента среда выполнения Windows (универсальная windows) и нажмите кнопку "Далее". Измените имя на ImageEnhancer и нажмите кнопку "Создать". При появлении запроса оставьте значения свойств "Конечная версия" и "Минимальная версия" по умолчанию.

Щелкните проект правой кнопкой мыши в Обозреватель решений, выберите "Добавить > новый элемент", выберите "Шаблонированный элемент управления", измените имя на AwesomeImageControl.cs и нажмите кнопку "Добавить".

Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Свойства". На странице "Свойства" выберите вкладку "Сборка" и включите XML-файл документации:

Щелкните решение правой кнопкой мыши и выберите пакетную сборку. Выберите пять полей сборки, как показано на следующем рисунке. Благодаря этому при сборке создается полный набор артефактов для каждой из целевых систем, поддерживаемых Windows.

В диалоговом окне пакетной сборки выберите "Сборка ", чтобы проверить проект и создать выходные файлы, необходимые для пакета NuGet.
Примечание.
В этом пошаговом руководстве для пакета будут использоваться артефакты отладки. Если пакет не является отладочным, в диалоговом окне "Пакетная сборка" установите вместо этого флажки в строках, соответствующих конфигурации выпуска, и при выполнении последующих действий обращайтесь к полученным папкам выпуска.
Создание и изменение файла NUSPEC
Чтобы создать исходный .nuspec файл, выполните следующие действия. В последующих разделах описаны другие необходимые обновления.
Откройте командную строку и перейдите к папке, содержащей
ImageEnhancer.csprojфайл, который должен быть вложенной папкой папки, содержащей файл решения.NuGet specВыполните команду, чтобы создатьImageEnhancer.nuspecфайл. Имя файла берется из имени.csrojфайла.nuget specОткройте файл
ImageEnhancer.nuspecв редакторе и измените его содержимое так, как показано ниже, заменив YOUR_NAME на соответствующее значение. Не оставляйте никаких значений $propertyName$ . Значение<id>должно быть уникальным в пределах nuget.org (см. соглашения об именовании, описанные в разделе Создание пакета). Кроме того, обратите внимание на то, что необходимо изменить теги author и description, иначе на этапе упаковки произойдет ошибка.<?xml version="1.0"?> <package > <metadata> <id>ImageEnhancer.YOUR_NAME</id> <version>1.0.0</version> <title>ImageEnhancer</title> <authors>YOUR_NAME</authors> <owners>YOUR_NAME</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Awesome Image Enhancer</description> <releaseNotes>First release</releaseNotes> <copyright>Copyright 2020</copyright> <tags>image enhancer imageenhancer</tags> </metadata> </package>
Примечание.
Если пакет будет общедоступным, обратите особое внимание на элемент <tags>, так как эти теги помогают найти ваш пакет и понять его назначение.
Добавление метаданных Windows в пакет
Компоненту среды выполнения Windows требуются метаданные, которые описывают все его общедоступные типы, что делает возможным использование компонента другими приложениями и библиотеками. Эти метаданные содержатся в файле WINMD, который создается при компиляции проекта и должен быть включен в пакет NuGet. В это же время создается XML-файл с данными IntelliSense, который также необходимо включить в пакет.
Добавьте следующий узел <files> в файл .nuspec:
<package>
<metadata>
...
</metadata>
<files>
<!-- WinMd and IntelliSense files -->
<file src="bin\Debug\ImageEnhancer.winmd" target="lib\uap10.0"/>
<file src="bin\Debug\ImageEnhancer.xml" target="lib\uap10.0"/>
</files>
</package>
Добавление содержимого XAML
Чтобы добавить элемент управления XAML вместе с компонентом, необходимо включить XAML-файл с шаблоном по умолчанию для элемента управления (который создается шаблоном проекта). Он также указывается в разделе <files>:
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- XAML controls -->
<file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>
</files>
</package>
Добавление библиотек, реализованных в машинном коде
В компоненте основная логика типа ImageEnhancer реализована в машинном коде, который содержится в различных сборках ImageEnhancer.winmd, создаваемых для каждой целевой среды выполнения (ARM, ARM64, x86 и x64). Чтобы включить их в пакет, добавьте ссылки на них и на связанные с ними PRI-файлы ресурсов в раздел <files>:
<?xml version="1.0"?>
<package >
<metadata>
...
</metadata>
<files>
...
<!-- WINMDs and resources -->
<file src="bin\ARM\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm"/>
<file src="bin\ARM\Debug\ImageEnhancer.pri" target="runtimes\win10-arm"/>
<file src="bin\ARM64\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm64"/>
<file src="bin\ARM64\Debug\ImageEnhancer.pri" target="runtimes\win10-arm64"/>
<file src="bin\x64\Debug\ImageEnhancer.winmd" target="runtimes\win10-x64"/>
<file src="bin\x64\Debug\ImageEnhancer.pri" target="runtimes\win10-x64"/>
<file src="bin\x86\Debug\ImageEnhancer.winmd" target="runtimes\win10-x86"/>
<file src="bin\x86\Debug\ImageEnhancer.pri" target="runtimes\win10-x86"/>
</files>
</package>
Итоговый файл NUSPEC
Итоговый файл .nuspec должен выглядеть следующим образом (YOUR_NAME, и в этом случае необходимо заменить на соответствующее значение):
<?xml version="1.0"?>
<package >
<metadata>
<id>ImageEnhancer.YOUR_NAME</id>
<version>1.0.0</version>
<title>ImageEnhancer</title>
<authors>YOUR_NAME</authors>
<owners>YOUR_NAME</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Awesome Image Enhancer</description>
<releaseNotes>First Release</releaseNotes>
<copyright>Copyright 2020</copyright>
<tags>image enhancer imageenhancer</tags>
</metadata>
<files>
<!-- WinMd and IntelliSense -->
<file src="bin\Debug\ImageEnhancer.winmd" target="lib\uap10.0"/>
<file src="bin\Debug\ImageEnhancer.xml" target="lib\uap10.0"/>
<!-- XAML controls -->
<file src="Themes\Generic.xaml" target="lib\uap10.0\Themes"/>
<!-- WINMDs and resources -->
<file src="bin\ARM\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm"/>
<file src="bin\ARM\Debug\ImageEnhancer.pri" target="runtimes\win10-arm"/>
<file src="bin\ARM64\Debug\ImageEnhancer.winmd" target="runtimes\win10-arm64"/>
<file src="bin\ARM64\Debug\ImageEnhancer.pri" target="runtimes\win10-arm64"/>
<file src="bin\x64\Debug\ImageEnhancer.winmd" target="runtimes\win10-x64"/>
<file src="bin\x64\Debug\ImageEnhancer.pri" target="runtimes\win10-x64"/>
<file src="bin\x86\Debug\ImageEnhancer.winmd" target="runtimes\win10-x86"/>
<file src="bin\x86\Debug\ImageEnhancer.pri" target="runtimes\win10-x86"/>
</files>
</package>
Упаковка компонента
Когда будет готов файл .nuspec со ссылками на все файлы, которые необходимо включить в пакет, можно выполнить команду nuget pack:
nuget pack ImageEnhancer.nuspec
Будет создан ImageEnhancer.YOUR_NAME.1.0.0.nupkg. Если открыть файл в таком средстве, как обозреватель пакетов NuGet, и развернуть все узлы, отобразится следующее содержимое:

Совет
Файл .nupkg — это просто ZIP-файл с другим расширением. Поэтому чтобы просмотреть содержимое пакета, можно просто изменить расширение .nupkg на .zip, но не забудьте восстановить расширение перед отправкой пакета на сайт nuget.org.
Чтобы предоставить доступ к пакету другим разработчикам, следуйте инструкциям в разделе Публикация пакета.