Что такое пакет SDK для .NET?
Пакет SDK для .NET — это набор библиотек и инструментов, которые разработчики используют для создания приложений и библиотек .NET. Он содержит следующие компоненты, которые используются для сборки и запуска приложений:
- Интерфейс командной строки .NET.
- Среда выполнения и библиотеки .NET.
- Драйвер dotnet .
Установка пакета SDK для .NET
Как и при использовании любого инструмента, первым шагом является получение инструментов на компьютере. В зависимости от сценария вы можете установить пакет SDK одним из следующих методов:
- Использовать собственные установщики.
- Использовать скрипт оболочки для установки.
Собственные установщики в основном предназначены для компьютеров разработки. Пакет SDK распространяется посредством собственного механизма установки каждой поддерживаемой платформы, например пакетов DEB в Ubuntu или пакетов MSI в Windows. Эти установщики устанавливают и настраивают среду в соответствии с требованиями пользователя, чтобы он мог использовать пакет SDK сразу после установки. Однако они требуют прав администратора на компьютере. Вы найдете пакет SDK для установки на странице загрузок .NET.
Скрипты установки, с другой стороны, не требуют прав администратора. Но они не устанавливают все необходимые компоненты на компьютере; вы должны установить их вручную. Скрипты предназначены в основном для настройки серверов сборки или при необходимости установки средств без прав администратора. Дополнительные сведения см. в справочнике по скриптам установки. Сведения о настройке пакета SDK на сервере сборки CI см. в разделе «Использование пакета SDK для .NET в средах непрерывной интеграции (CI).
По умолчанию пакет SDK устанавливается в режиме «параллельно» (SxS), что означает, что несколько версий могут сосуществовать на одном компьютере. Сведения о том, как версия выбирается при выполнении команд CLI, см. в разделе «Выбор версии .NET для использования».
Руководство по обеспечению безопасности
Пакет SDK для .NET находит и выполняет различные средства, которые будут отправляться в виде отдельных исполняемых двоичных файлов в пакете SDK. В большинстве случаев пакет SDK может определить полный путь к исполняемому файлу. Однако существуют исключения, в которых пакет SDK не может определить путь и зависит от входных данных пользователя. Возможно, пользователь может предоставить входные данные, которые приводят к выполнению вредоносного программного обеспечения пакета SDK для .NET. По этой причине не следует доверять репозиториям с двоичными файлами, которые соответствуют определенным именам файлов в расположении установки пакета SDK, например msbuild.exe. Пакет SDK устанавливается в папку с версиями, например C:\Program Files\dotnet\sdk\7.0.400\ в Windows или /usr/bin/share/dotnet/sdk/7.0.400 в Linux.
См. также
- Скачивание .NET
- Обзор интерфейса командной строки .NET
- Обзор управления версиями .NET
- Удаление среды выполнения .NET и пакета SDK
- Выбор версии .NET для использования
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Удаление среды выполнения .NET и пакета SDK
По мере установки обновленных версий среды выполнения и пакета SDK .NET может потребоваться удалить устаревшие версии .NET с вашего компьютера. Удаление старых версий среды выполнения может изменить среду выполнения, выбранную для запуска приложений общей платформы, как описано в статье о выборе версии .NET.
Нужно ли удалять версию
Выбор версии .NET и совместимость среды выполнения .NET для различных обновлений обеспечивает безопасное удаление предыдущих версий. Обновления среды выполнения .NET совместимы в основной группе версий, например 7.x и 6.x. Кроме того, более поздние выпуски пакета SDK для .NET обычно позволяют создавать приложения, совместимые с предыдущими версиями среды выполнения.
Как правило, требуется только последняя версия пакета SDK и последняя версия исправлений для сред выполнения, необходимых для вашего приложения. Вы можете хранить старые пакеты SDK или версии среды выполнения, например для поддержки приложений на базе project.json. Если у приложения нет конкретных причин, по которым оно должно использовать ранние версии пакета SDK или среды выполнения, вы можете безопасно удалить старые версии.
Определите компоненты, которые нужно установить
Определить версии пакета SDK и среды выполнения, установленных на вашем компьютере, можно с помощью команд в .NET CLI. Используйте dotnet —list-sdks , чтобы просмотреть список установленных пакетов SDK, и dotnet —list-runtimes для просмотра списка сред выполнения. Дополнительные сведения см. в статье Проверка того, установлена ли платформа .NET.
Удаление .NET
.NET использует диалоговое окно «Функции приложений Windows» & для удаления версий среды выполнения и пакета SDK для .NET. На следующем рисунке показан диалоговое окно «Функции приложений&». Вы можете выполнить поиск по запросу core или .net, чтобы отфильтровать и вывести установленные версии .NET.

Выберите все версии, которые необходимо удалить с компьютера, и нажмите кнопку Удалить.
Лучший способ удаления .NET — выполнить действие, противоположное тому, которое использовалось при установке .NET. Конкретные действия зависят от выбранного дистрибутива Linux и метода установки.
Предварительные версии устанавливаются вручную и должны быть удалены вручную. Дополнительные сведения см. в разделе «Скрипты» или «Вручную «.
Дополнительные сведения об установке Red Hat см. в документации по Red Hat для .NET.
При установке .NET можно удалить следующие типы:
- Диспетчер пакетов
- Установка вручную или скриптов
Диспетчер пакетов
Нет необходимости сначала удалять пакет SDK для .NET при его обновлении с помощью диспетчера пакетов, если только не выполняется обновление с предварительной версии, установленной вручную. Диспетчер пакетов update или команды refresh автоматически удалят старую версию после успешной установки более новой версии. Если у вас установлена предварительная версия, удалите ее.
Если вы установили .NET с помощью диспетчера пакетов, для удаления пакета SDK для .NET или среды выполнения используется тот же диспетчер пакетов. .NET поддерживает большинство популярных менеджеров пакетов. Точный синтаксис команды для вашей среды см. в документации по вашему дистрибутиву:
- apt-get(8) используется в системах на основе Debian, включая Ubuntu.
- yum(8) используется в Fedora, CentOS, Oracle Linux и RHEL.
- zypper(8) используется в openSUSE и SUSE Linux Enterprise System (SLES).
- dnf(8) используется в Fedora.
Практически во всех случаях для удаления пакета используется команда remove .
Для установки пакета SDK для .NET в большинстве диспетчеров пакетов используется имя пакета dotnet-sdk , за которым следует номер версии. Начиная с версии 2.1.300 пакета SDK для .NET и версии 2.1 среды выполнения необходимы только основной номер версии и дополнительный номер версии: например, для версии 2.1.300 пакета SDK для .NET можно указать пакет dotnet-sdk-2.1 . В предыдущих версиях необходимо указать полную строку версии, например, для версии 2.1.200 пакета SDK для .NET потребовалось бы указать dotnet-sdk-2.1.200 .
Для компьютеров, на которых установлена только среда выполнения без пакета SDK, используется имя пакета dotnet-runtime- для среды выполнения .NET и aspnetcore-runtime- для стека всей среды выполнения.
Скрипты или вручную
Если вы установили .NET с помощью скрипта dotnet-install или извлекаете tarball, необходимо удалить .NET с помощью ручного метода.
При установке .NET вручную он обычно устанавливается в /usr/share/dotnet/ /usr/lib/dotnet/ каталог или $HOME/.dotnet каталог. Узел SDK, среды выполнения и .NET устанавливаются в отдельные вложенные каталоги. Эти каталоги component содержат каталог для каждой версии .NET. Удалив версии каталогов, вы удалите эту версию .NET из системы. Эти каталоги могут различаться в зависимости от дистрибутива Linux.
Существует три команды, которые можно использовать для обнаружения места установки .NET: dotnet —list-sdks для пакетов SDK, dotnet —list-runtimes для сред выполнения и dotnet —info для всего. Эти команды не перечисляют узел .NET. Чтобы определить, какие узлы установлены, проверка /usr/share/dotnet/host/fxr/ каталоге. Следующий список представляет каталоги определенной версии .NET, где $version переменная представляет версию .NET:
- Пакет SDK: /usr/share/dotnet/sdk/$version/
- Среда выполнения. Среда выполнения основана на конкретных средах выполнения продукта .NET, таких как Microsoft.AspNetCore.All или Microsoft.NETCore.App (среда выполнения .NET специально). Они устанавливаются в /usr/share/dotnet/shared/$product/$version каталог, где $product находится среда выполнения продукта. Например, могут отображаться следующие каталоги:
/usr/share/dotnet/shared/Microsoft.NETCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
rm -rf Используйте команду, чтобы удалить версию .NET. Например, чтобы удалить пакет SDK 6.0.406, выполните следующую команду:
sudo rm -rf /usr/share/dotnet/sdk/6.0.406
Каталоги версий могут не совпадать с «версией», которую вы удаляете. Отдельные среды выполнения и пакеты SDK, установленные с одним выпуском .NET, могут иметь разные версии. Например, возможно, вы установили ASP.NET Core 8 Runtime, которая установила среду выполнения 8.0.2 ASP.NET Core и среду выполнения 8.0.8 .NET. У каждого из них есть другой каталог с версиями. Дополнительные сведения см. в статье Общие сведения об управлении версиями в .NET.
При установке .NET вручную он обычно устанавливается в /usr/local/share/dotnet/ каталог или $HOME/.dotnet каталог. Узел SDK, среды выполнения и .NET устанавливаются в отдельные вложенные каталоги. Эти каталоги component содержат каталог для каждой версии .NET. Удалив версии каталогов, вы удалите эту версию .NET из системы. Эти каталоги могут различаться в зависимости от дистрибутива Linux.
Существует три команды, которые можно использовать для обнаружения места установки .NET: dotnet —list-sdks для пакетов SDK, dotnet —list-runtimes для сред выполнения и dotnet —info для всего. Эти команды не перечисляют узел .NET. Чтобы определить, какие узлы установлены, проверка /usr/local/share/dotnet/host/fxr/ каталоге. Следующий список представляет каталоги определенной версии .NET, где $version переменная представляет версию .NET:
- Пакет SDK: /usr/local/share/dotnet/sdk/$version/
- Среда выполнения. Среда выполнения основана на конкретных средах выполнения продукта .NET, таких как Microsoft.AspNetCore.All или Microsoft.NETCore.App (среда выполнения .NET специально). Они устанавливаются в /usr/local/share/dotnet/shared/$product/$version каталог, где $product находится среда выполнения продукта. Например, можно увидеть следующие каталоги:
/usr/local/share/dotnet/shared/Microsoft.NETCore.App/$version/dotnet --info /usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/$version/ /usr/local/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
rm -rf Используйте команду, чтобы удалить версию .NET. Например, чтобы удалить пакет SDK 6.0.406, выполните следующую команду:
sudo rm -rf /usr/local/share/dotnet/sdk/6.0.406
Каталоги версий могут не совпадать с «версией», которую вы удаляете. Отдельные среды выполнения и пакеты SDK, установленные с одним выпуском .NET, могут иметь разные версии. Например, возможно, вы установили ASP.NET Core 8 Runtime, которая установила среду выполнения 8.0.2 ASP.NET Core и среду выполнения 8.0.8 .NET. У каждого из них есть другой каталог с версиями. Дополнительные сведения см. в статье Общие сведения об управлении версиями в .NET.
Если вы используете Компьютер Mac на основе Arm, например один с микросхемой M1, просмотрите пути к каталогу, описанные в статье «Установка .NET на компьютерах Mac на основе Arm».
Средство удаления .NET
Средство удаления .NET ( dotnet-core-uninstall ) позволяет удалять пакеты SDK и среды выполнения .NET из системы. Указать удаляемые версии можно с помощью ряда параметров.
Зависимость Visual Studio от версий пакетов SDK для .NET
До появления Visual Studio 2019 версии 16.3 установщики Visual Studio пользовались автономным установщиком пакета SDK для .NET Core версий 2.1 или 2.2. В результате версии пакета SDK отображаются в диалоговом окне функций приложений & Windows. Удаление пакетов SDK для .NET, установленных Visual Studio с помощью автономного установщика, может нарушить работу Visual Studio. Если после удаления пакетов SDK в Visual Studio возникают проблемы, запустите «Восстановление» для этой конкретной версии Visual Studio. В следующей таблице показаны некоторые зависимости Visual Studio от пакета SDK для версий .NET Core.
| Версия Visual Studio | Версия пакета SDK для .NET Core |
|---|---|
| Visual Studio 2019 версии 16.2 | пакет SDK для NET Core 2.2.4xx, 2.1.8xx |
| Visual Studio 2019 версии 16.1 | пакет SDK для .NET Core 2.2.3xx, 2.1.7xx |
| Visual Studio 2019 версии 16.0 | пакет SDK для .NET Core 2.2.2xx, 2.1.6xx |
| Visual Studio 2017 версии 15.9 | Пакет SDK для .NET Core 2.2.1xx, 2.1.5xx |
| Visual Studio 2017 версии 15.8 | Пакет SDK для .NET Core 2.1.4xx |
Visual Studio 2019 версии 16.3 и выше управляет собственной копией пакета SDK для .NET. По этой причине эти версии пакета SDK больше не отображаются в диалоговом окне «Функции приложений&».
Удаление резервного каталога NuGet
Перед пакетом SDK для .NET Core 3.0 установщики пакета SDK для .NET Core использовали каталог NuGetFallbackFolder для хранения кэша пакетов NuGet. Этот кэш использовался во время таких операций, как dotnet restore или dotnet build /t:Restore . NuGetFallbackFolder находится в папке пакета SDK, в которой установлена .NET. Например, это может быть в C:\Program Files\dotnet\sdk\NuGetFallbackFolder в Windows и по адресу /usr/local/share/dotnet/sdk/NuGetFallbackFolder в macOS.
Возможно, вы хотите удалить этот каталог, если:
- Разработка выполняется только с использованием пакета SDK для .NET Core 3.0 или .NET 5 или более поздних версий.
- Разработка выполняется с использованием пакета SDK для .NET Core версий до 3.0, но вы можете работать в режиме «в сети».
Если вы хотите удалить резервный каталог NuGet, его можно удалить, но для этого потребуются права администратора.
Не рекомендуется удалять каталог dotnet . Это приведет к удалению всех ранее установленных глобальных средств. Также, в Windows:
- Работа Visual Studio 2019 версии 16.3 и более поздних версий будет нарушена. Для восстановления можно запустить Восстановление.
- Если в диалоговом окне функций приложений & есть записи пакета SDK для .NET Core, они будут потеряны.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Веб-пакет SDK для ASP.NET Core
Microsoft.NET.Sdk.Web — это пакет SDK проекта MSBuild для разработки приложений ASP.NET Core. Приложения ASP.NET Core можно создавать и без этого пакета SDK, однако веб-пакет SDK дает следующие преимущества:
- обеспечивает максимальное удобство разработки;
- рекомендуется для большинства пользователей.
Используйте Web.SDK в проекте:
Возможности, обеспечиваемые веб-пакетом SDK:
- Неявные ссылки:
- общая платформа ASP.NET Core;
- анализаторы, предназначенные для создания приложений ASP.NET Core.
Свойства
Свойство Description DisableImplicitFrameworkReferences Отключает неявную ссылку на общую платформу Microsoft.AspNetCore.App . DisableImplicitAspNetCoreAnalyzers Отключает неявную ссылку на анализаторы ASP.NET Core. DisableImplicitComponentsAnalyzers Отключает неявную ссылку на анализаторы компонентов Razor при сборке приложений Blazor (серверных). Дополнительные сведения о задачах, целевых объектах, свойствах, неявных больших двоичных объектах, глобах, публикации, методах и т. д. см . в файле README в репозитории WebSdk .
Обзор
Microsoft.NET.Sdk.Web — это пакет SDK проекта MSBuild для разработки приложений ASP.NET Core. Приложения ASP.NET Core можно создавать и без этого пакета SDK, однако веб-пакет SDK дает следующие преимущества:
- обеспечивает максимальное удобство разработки;
- рекомендуется для большинства пользователей.
Используйте Web.SDK в проекте:
Веб-пакет SDK импортирует целевые объекты MSBuild, которые позволяют использовать профили публикации и выполнять публикацию с помощью WebDeploy.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Пакеты SDK для проектов .NET
Проекты .NET Core и NET 5 и более поздних версий связаны с пакетом средств разработки программного обеспечения (SDK). Каждый пакет SDK для проекта является набором целевых объектов MSBuild и связанных задач, которые отвечают за компиляцию, упаковку и публикацию кода. Проект, который ссылается на пакет SDK для проекта, иногда называется проектом в стиле пакета SDK.
Доступные пакеты SDK
Доступны следующие пакеты SDK:
ID Описание Репозиторий Microsoft.NET.Sdk Пакет SDK для .NET https://github.com/dotnet/sdk Microsoft.NET.Sdk.Web Веб-пакет SDK для .NET https://github.com/dotnet/sdk Microsoft.NET.Sdk.BlazorWebAssembly BlazorПакет SDK WebAssembly для .NET Microsoft.NET.Sdk.Razor Пакет SDK Razor для .NET Microsoft.NET.Sdk.Worker Пакет SDK службы рабочих ролей .NET Microsoft.NET.Sdk.WindowsDesktop Пакет SDK для классических приложений .NET, включающий Windows Forms (WinForms) и Windows Presentation Foundation (WPF).* https://github.com/dotnet/winforms и https://github.com/dotnet/wpf Пакет SDK для .NET является базовым пакетом SDK для .NET. Другие пакеты SDK ссылаются на пакет SDK для .NET, а проекты, связанные с другими пакетами SDK, имеют все доступные им свойства пакета SDK для .NET. Например, веб-пакет SDK зависит от пакета SDK для .NET и пакета SDK для Razor.
Можно также создать собственный пакет SDK и распространять его с помощью NuGet.
* Начиная с .NET 5, проекты Windows Forms и Windows Presentation Foundation (WPF) должны указывать пакет SDK для .NET ( Microsoft.NET.Sdk ) вместо Microsoft.NET.Sdk.WindowsDesktop . Если для параметра TargetFramework в таких проектах установить значение net5.0-windows , а для параметра UseWPF или UseWindowsForms — значение true , импорт пакета SDK для Windows Desktop будет выполняться автоматически. Если проект предназначен для .NET 5 или более поздней версии и в нем указан пакет SDK Microsoft.NET.Sdk.WindowsDesktop , при сборке отобразится предупреждение NETSDK1137.
Файлы проекта
В основе проектов .NET лежит формат MSBuild. Файлы проекта с такими расширениями, как CPROJ для проектов C# и FPROJ для проектов F#, имеют формат XML. Корневым элементом файла проекта MSBuild является элемент Project. Элемент Project имеет необязательный атрибут Sdk , указывающий, какой пакет SDK (и версию) следует использовать. Чтобы использовать средства .NET и выполнить сборку кода, задайте в качестве значения атрибута Sdk один из идентификаторов, указанных в таблицеДоступные пакеты SDK.
Чтобы указать пакет SDK, который содержится в NuGet, добавьте версию в конец имени или укажите имя и версию в файле global.json.
Другим способом указания пакета SDK является элемент Sdk верхнего уровня.
Указание пакета SDK одним из этих способов значительно упрощает файлы проекта для .NET. На этапе оценки проекта MSBuild добавляет неявные директивы импорта для Sdk.props в начале и для Sdk.targets в конце файла проекта.
На компьютере Windows файлы Sdk.props и Sdk.targets можно найти в папке %ProgramFiles%\dotnet\sdk\[version]\Sdks\Microsoft.NET.Sdk\Sdk .
Предварительная обработка файла проекта
Увидеть полностью развернутый проект так, как он отображается в MSBuild, можно после включения пакета SDK и его целевых объектов с помощью команды dotnet msbuild -preprocess . Включите параметр preprocess в команду dotnet msbuild , чтобы просмотреть сведения об импортированных файлах, их источниках, вкладе в сборку без фактического создания проекта.
Если проект имеет несколько требуемых версий .NET Framework, результаты выполнения команды должны касаться только одной из них. Эту версию следует указать в качестве свойства MSBuild. Пример:
dotnet msbuild -property:TargetFramework=netcoreapp2.0 -preprocess:output.xml
Включения и исключения по умолчанию
В пакете SDK определены стандартные включения и исключения для элементов Compile , внедренных ресурсов и элементов None . В отличие от проектов .NET Framework без пакетов SDK в файле проекта не нужно указывать эти элементы, так как для наиболее распространенных вариантов использования действуют значения по умолчанию. Такой подход позволяет уменьшить файлы проекта и без труда понимать их, а при необходимости даже вносить правки вручную.
В следующей таблице показано, какие элементы и стандартные маски включены в пакет SDK для .NET и исключены из него:
Элемент Стандартная маска включения Стандартная маска исключения Стандартная маска удаления Compile **/*.cs (или другие расширения языка) **/*.Пользователя; **/*.*Proj; **/*.Sln; **/*.Vssscc Н/Д EmbeddedResource **/*.Resx **/*.Пользователя; **/*.*Proj; **/*.Sln; **/*.Vssscc Н/Д None **/* **/*.Пользователя; **/*.*Proj; **/*.Sln; **/*.Vssscc **/*.Cs; **/*.Resx Папки ./bin и ./obj , которые представлены свойствами MSBuild $(BaseOutputPath) и $(BaseIntermediateOutputPath) , исключаются из стандартных масок исключения по умолчанию. Исключения представлены свойством DefaultItemExcludes.
Пакет SDK для настольных систем в .NET имеет больше включений и исключений для WPF. Дополнительные сведения см. в разделе Включения и исключения для WPF.
Ошибки сборки
Если вы явным образом определите любой из этих элементов в файле проекта, скорее всего, произойдет ошибка сборки NETSDK1022 с примерно таким сообщением:
Duplicate ‘Compile’ items were included. The .NET SDK includes ‘Compile’ items from your project directory by default. You can either remove these items from your project file, or set the ‘EnableDefaultCompileItems’ property to ‘false’ if you want to explicitly include them in your project file. (Включены повторяющиеся элементы Compile. По умолчанию пакет SDK для .NET включает элементы Compile из каталога проекта. Можно удалить эти элементы из файла проекта или задать для свойства EnableDefaultCompileItems значение false, чтобы явно включить их в файл проекта).
Duplicate ‘EmbeddedResource’ items were included. The .NET SDK includes ‘EmbeddedResource’ items from your project directory by default. You can either remove these items from your project file, or set the ‘EnableDefaultEmbeddedResourceItems’ property to ‘false’ if you want to explicitly include them in your project file. (Включены повторяющиеся элементы Compile. По умолчанию пакет SDK для .NET включает элементы Compile из каталога проекта. Можно удалить эти элементы из файла проекта или задать для свойства EnableDefaultCompileItems значение false, чтобы явно включить их в файл проекта).
Чтобы устранить такую проблему, выполните любое из следующих действий:
- Удалите явно заданные элементы Compile , EmbeddedResource или None , которые совпадают с неявно заданными параметрами из предыдущей таблицы.
- Присвойте свойству EnableDefaultItems значение false , чтобы отключить все неявные включения файлов:
false false false false Неявные директивы using
Начиная с .NET 6 неявные директивы global using добавляются в новые проекты C#. Это означает, что вы можете использовать определенные в этих пространствах имен типы без указания полных имен или добавления директивы using вручную. Термин неявный здесь обозначает, что директивы global using добавляются в созданный файл в каталоге проекта obj.
Неявные директивы global using добавляются для проектов, которые используют один из следующих пакетов SDK:
- Microsoft.NET.Sdk
- Microsoft.NET.Sdk.Web
- Microsoft.NET.Sdk.Worker
- Microsoft.NET.Sdk.WindowsDesktop
Директива global using добавляется для каждого пространства имен в наборе пространств имен по умолчанию, основанных на пакете SDK проекта. Эти пространства имен по умолчанию показаны в следующей таблице.
SDK Пространства имен по умолчанию Microsoft.NET.Sdk System
System.Collections.Generic
System.IO
System.Linq
System.Net.Http
System.Threading
System.Threading.TasksMicrosoft.NET.Sdk.Web System.Net.Http.Json
Microsoft.AspNetCore.Builder
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Http
Microsoft.AspNetCore.Routing
Microsoft.Extensions.Configuration
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Microsoft.Extensions.LoggingMicrosoft.NET.Sdk.Worker Microsoft.Extensions.Configuration
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Microsoft.Extensions.LoggingMicrosoft.NET.Sdk.WindowsDesktop (Windows Forms) Пространства имен Microsoft.NET.Sdk
System.Drawing
System.Windows.FormsMicrosoft.NET.Sdk.WindowsDesktop (WPF) Пространства имен Microsoft.NET.Sdk
System.IO удалено
System.Net.Http удаленоЕсли вы хотите отключить эту возможность или включить неявные директивы global using для существующего проекта C#, это можно сделать с помощью свойства MSBuild ImplicitUsings .
Вы можете указать дополнительные неявные директивы global using , добавив элементы Using (или элементы Import для проектов Visual Basic) в файл проекта, например так:
Неявные ссылки на пакет
При использовании .NET Core 1.0–2.2 или .NET Standard 1.0–2.0 пакет SDK для .NET добавляет неявные ссылки на определенные метапакеты. Метапакет — это пакет на основе платформы, который состоит только из зависимостей от других пакетов. Теперь неявные ссылки на метапакеты указываются в зависимости от целевой платформы, указанной в свойстве TargetFramework или TargetFrameworks файла проекта.
netcoreapp2.1 netcoreapp2.1;net462 При необходимости можно отключить неявные ссылки на пакеты с помощью свойства DisableImplicitFrameworkReferences и добавить явные ссылки только на необходимые платформы или пакеты.
- При использовании .NET Framework, .NET Core 1.0–2.2 или .NET Standard 1.0–2.0 не добавляйте явную ссылку на метапакеты Microsoft.NETCore.App или NETStandard.Library через элемент в файле проекта. Для проектов .NET Core 1.0–2.2 и .NET Standard 1.0–2.0 ссылка на эти метапакеты неявно присутствует. Если при использовании проектов .NET Framework и пакета NuGet на основе .NET Standard требуется любая версия NETStandard.Library , NuGet автоматически устанавливает ее.
- Если при использовании .NET Core 1.0–2.2 нужна определенная версия среды выполнения, вместо ссылки на метапакет следует использовать свойство в проекте (например, 1.0.4 ). Например, может потребоваться специальная версия LTS среды выполнения 1.0.0, если вы используете автономные развертывания.
- Если при использовании .NET Standard 1.0–2.0 вам нужна конкретная версия метапакета NETStandard.Library , можно использовать свойство и установить требуемую версию.
События сборки
Для проектов в стиле пакета SDK используйте целевой объект MSBuild с именем PreBuild или PostBuild и задайте свойство BeforeTargets для PreBuild или свойство AfterTargets для PostBuild .
- Для целевых объектов MSBuild можно использовать любые имена. Однако интегрированная среда разработки Visual Studio распознает целевые объекты PreBuild и PostBuild , поэтому с помощью этих имен можно изменять команды в интегрированной среде разработки.
- Свойства PreBuildEvent и PostBuildEvent не рекомендуется использовать в проектах в стиле пакета SDK, поскольку такие макросы, как $(ProjectDir) , не разрешены. Например, приведенный ниже код не поддерживается.
"$(ProjectDir)PreBuildEvent.bat" "$(ProjectDir)..\" "$(ProjectDir)" "$(TargetDir)" Настройка сборки
Существует несколько способов настройки сборки. Может потребоваться переопределить свойство, передав его в качестве аргумента в команду msbuild или dotnet. Вы также можете добавить свойство в файл проекта или в файл Directory.Build.props. Список полезных свойств для проектов .NET см. в статье Справочник по MSBuild для проектов пакета SDK для .NET.
Простой способ создать файл Directory.Build.props из командной строки — использовать команду dotnet new buildprops в корне репозитория.
Пользовательские целевые объекты
В проектах .NET доступна возможность упаковки пользовательских целевых объектов MSBuild и свойств для использования в проектах, применяющих этот пакет. Используйте этот тип расширяемости, если нужно выполнить следующие задачи:
- расширить процесс сборки;
- получить доступ к артефактам процесса сборки, таким как созданные файлы;
- проверить конфигурацию, с которой была запущена сборка.
Чтобы добавить пользовательские целевые объекты или свойства сборки, нужно поместить файлы в форме .targets или .props (например, Contoso.Utility.UsefulStuff.targets ) в папку build проекта.
Следующий XML-код является фрагментом из файла CPROJ, который указывает команде dotnet pack , что именно нужно упаковать. Элемент помещает файлы целевых объектов в папку build в пакете. Элемент помещает сборки и файлы JSON в папку build.
. true build\ .true build\ Чтобы использовать пользовательский целевой объект в проекте, добавьте элемент PackageReference , указывающий на пакет и его версию. В отличие от средств пакет пользовательских целевых объектов входит в замыкание зависимостей исходного проекта.
Вы можете настроить способ использования пользовательского целевого объекта. Так как это целевой объект MSBuild, он может зависеть от заданного целевого объекта, запускаться после другого целевого объекта или быть вызван вручную с помощью команды dotnet msbuild -t: . Однако для удобства пользователей можно объединить средства для отдельных проектов и пользовательские целевые объекты. В этом сценарии средство для отдельного проекта принимает необходимые параметры и преобразует их в требуемый вызов dotnet msbuild , который выполняет целевой объект. Пример подобного типа синергии можно увидеть в репозитории примеров хакатона MVP Summit 2016 в проекте dotnet-packer .
См. также раздел
- Настройка сборки (MSBuild)
- Использование пакетов SDK проекта MSBuild
- Упаковка пользовательских целевых объектов и свойств MSBuild с помощью NuGet
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.