Справочник по MSBuild для проектов пакета SDK для .NET
Статья
Эта страница содержит справочные сведения о свойствах и элементах MSBuild, которые вы можете использовать для настройки проектов .NET.
Примечание
Работа над этой страницей еще не завершена, поэтому здесь приведены лишь некоторые полезные свойства MSBuild для пакета SDK для .NET. Список стандартных свойств см. в статье Общие свойства MSBuild.
Свойства проверки сборки
Эти свойства и элементы передаются в ValidateAssemblies задачу. Дополнительные сведения о проверке сборки см. в разделе "Проверка сборки".
В этом разделе описаны следующие свойства MSBuild:
Эти свойства не являются частью пакета SDK для .NET (пока). Чтобы использовать их, необходимо также добавить в PackageReferenceзадачу Microsoft.DotNet.ApiCompat.Task.
Кроме того, следующие свойства, описанные в свойствах проверки пакета, также применяются к проверке сборки:
Свойство GenerateAssemblyInfo управляет созданием атрибута AssemblyInfo для проекта. Значение по умолчанию — true. Используйте false, чтобы отключить создание файла:
Свойство GeneratedAssemblyInfoFile определяет относительный или абсолютный путь к файлу сведений о созданной сборке. По умолчанию используется файл с именем [имя_проекта].AssemblyInfo.[cs|vb] в каталоге $(IntermediateOutputPath) (обычно это obj).
Свойство TargetFramework определяет версию целевой платформы для приложения. Список допустимых моникеров целевой платформы см. в статье Целевые платформы в проектах в стиле SDK.
Используйте свойство TargetFrameworks, если приложение должно быть предназначено для нескольких платформ. Список допустимых моникеров целевой платформы см. в статье Целевые платформы в проектах в стиле SDK.
Примечание
Это свойство игнорируется, если указано свойство TargetFramework (в единственном числе).
Это свойство применяется только к проектам, использующим netstandard1.x. Он не применяется к проектам, использующим netstandard2.x.
Используйте свойство NetStandardImplicitPackageVersion, если вам нужно указать версию платформы ниже версии метапакета. Файл проекта, приведенный в следующем примере, предназначен для netstandard1.3, но использует NETStandard.Library версии 1.6.0.
Для описания пакета, созданного из проекта, можно указать такие свойства, как PackageId, PackageVersion, PackageIcon, Title и Description. Дополнительные сведения об этих и других свойствах см. в разделе целевой объект пакета.
Начиная с пакета SDK для .NET 8 по PackRelease умолчанию true. Дополнительные сведения см. в разделе "Dotnet pack" с конфигурацией выпуска.
Только пакет SDK для .NET 7. Чтобы использовать PackRelease в проекте, который является частью решения Visual Studio, необходимо задать для переменной DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONStrue среды значение (или любое другое значение). Для решений, имеющих множество проектов, установка этой переменной увеличивает время, необходимое для упаковки.
Свойства проверки пакета
Эти свойства и элементы передаются в ValidatePackage задачу. Дополнительные сведения о проверке пакета см. в обзоре проверки пакетов.
Свойства задачи см. в разделе ValidateAssemblies проверки сборки".
В этом разделе описаны следующие свойства и элементы MSBuild:
Если задано значение true, ApiCompatEnableRuleAttributesMustMatch свойство включает правило проверки, которое проверяет соответствие атрибутов. Значение по умолчанию — false.
Если задано значение true, ApiCompatEnableRuleCannotChangeParameterName свойство включает правило проверки, которое проверяет, изменились ли имена параметров в общедоступных методах. Значение по умолчанию — false.
Свойство ApiCompatPreserveUnnecessarySuppressions указывает, следует ли сохранять ненужные подавления при повторном создании файла подавления. При повторном создании существующего файла подавления его содержимое считывается, десериализируется в набор подавления, а затем сохраняется в списке. Некоторые из подавлений могут больше не потребоваться, если несовместимость была исправлена. При сериализации подавления обратно на диск можно сохранить все существующие (десериализированные) выражения, задав для этого свойства значение true.
Элемент ApiCompatSuppressionFile задает путь к одному или нескольким файлам подавления для чтения. Если не указано, файл <подавления project-directory>/CompatibilitySuppressions.xml считывается (если он существует).
Свойство ApiCompatSuppressionOutputFile указывает путь к файлу подавления, в который записывается <ApiCompatGenerateSuppressionFile>запись.true Если не указано, используется первый ApiCompatSuppressionFile элемент.
EnablePackageValidation
Свойство EnablePackageValidation активирует ряд проверок пакета после задачи Pack. Дополнительные сведения см. в статье Проверка пакета.
Если задано значение true, EnableStrictModeForBaselineValidation свойство включает строгий режим для проверок базовых показателей пакета. Значение по умолчанию — false.
EnableStrictModeForCompatibleFrameworksInPackage
Если задано значение true, EnableStrictModeForCompatibleFrameworksInPackage свойство включает строгий режим для сборок, совместимых с целевой платформой. Значение по умолчанию — false.
EnableStrictModeForCompatibleTfms
Если задано значение true, EnableStrictModeForCompatibleTfms свойство включает строгий режим для сборок контракта и реализации для всех совместимых целевых платформ. Значение по умолчанию — true.
NoWarn
Свойство NoWarn задает идентификаторы диагностики для подавления.
Элемент PackageValidationBaselineFrameworkToIgnore указывает целевую платформу для пропуска из базового пакета. Строка платформы должна точно соответствовать имени папки в базовом пакете.
Свойство RoslynAssembliesPath указывает путь к каталогу, который содержит сборки Microsoft.CodeAnalysis, которые вы хотите использовать. Это свойство необходимо задать только в том случае, если вы хотите протестировать с помощью более нового компилятора, чем то, что находится в пакете SDK.
Свойства, связанные с публикацией
В этом разделе описаны следующие свойства MSBuild:
Свойство AppendTargetFrameworkToOutputPath определяет, добавляется ли моникер целевой платформы (TFM) к выходному пути (который определяется свойством OutputPath). Пакет SDK для .NET автоматически добавляет к выходному пути целевую платформу и идентификатор среды выполнения (если он есть). При установке значения AppendTargetFrameworkToOutputPath для свойства false TFM не добавляется к выходному пути. Однако при отсутствии TFM в выходном пути несколько артефактов сборки могут перезаписывать друг друга.
Например, при установке следующего параметра выходной путь для приложения .NET 5 изменяется с bin\Debug\net5.0 на bin\Debug:
Свойство AppendRuntimeIdentifierToOutputPath определяет, добавляется ли к выходному пути идентификатор среды выполнения (RID). Пакет SDK для .NET автоматически добавляет к выходному пути целевую платформу и идентификатор среды выполнения (если он есть). При установке значения AppendRuntimeIdentifierToOutputPath для свойства false RID не добавляется к выходному пути.
Например, для приложения .NET 5 и RID win-x64следующего параметра изменяется выходной путь с bin\Debug\net5.0\win-x64bin\Debug\net5.0:
Свойство CopyLocalLockFileAssemblies полезно для проектов подключаемых модулей, которые имеют зависимости от других библиотек. Если для этого свойства trueзадано значение, все транзитивные зависимости пакета NuGet копируются в выходной каталог. Это означает, что вы можете использовать выходные данные dotnet build для запуска подключаемого модуля на любом компьютере.
Значение CopyLocalLockFileAssemblies по умолчанию может отличаться в зависимости от типа вывода. Например, для библиотек классов значение по умолчанию равно, а для консольных приложений используется falsetrueзначение по умолчанию. Это свойство можно указать явным образом, чтобы переопределить значение по умолчанию при необходимости.
Совет
Кроме того, можно использовать dotnet publish для публикации библиотеки классов. Дополнительные сведения см. в разделе dotnet publish.
ErrorOnDuplicatePublishOutputFiles
Свойство ErrorOnDuplicatePublishOutputFiles указывает, выдает ли пакет SDK ошибку NETSDK1148, когда MSBuild обнаруживает дубликаты файлов в выходных данных публикации, но не может определить, какие файлы нужно удалить. Задайте для свойства ErrorOnDuplicatePublishOutputFiles значение false, если не нужно выдавать ошибку.
Начиная с пакета SDK для .NET 6, файл [Appname].runtimesettings.dev.jsonбольше не создается по умолчанию во время компиляции. Если вы по-прежнему хотите создать этот файл, задайте для свойства GenerateRuntimeConfigDevFile значение true.
Свойство GenerateRuntimeConfigurationFiles определяет, копируются ли параметры конфигурации среды выполнения из файла runtimeconfig. template.json в файл [имя приложения].runtimeconfig.json. Для приложений, которым требуется файл runtimeconfig.json, т.е. для тех, у которых OutputType имеет значение Exe, это свойство по умолчанию равно true.
Свойство GenerateSatelliteAssembliesForCore определяет, создаются ли вспомогательные сборки при использовании csc.exe или Al.exe (компоновщик сборок) в проектах платформы .NET Framework. (Проекты .NET Core и .NET 5+ всегда используют csc.exe для создания вспомогательных сборок.) Для проектов платформы .NET Framework вспомогательные сборки по умолчанию создаются средством al.exe. Если для свойства GenerateSatelliteAssembliesForCore задано значение true, вспомогательные сборки создаются в csc.exe. Использование csc.exe может оказаться выгодным в следующих ситуациях:
Свойство IsPublishable позволяет запускать целевой объект Publish. Это свойство касается только процессов, использующих файлы .*proj и целевой объект Publish, например команды dotnet publish. Оно не влияет на публикацию в Visual Studio, где используется целевой объект PublishOnly. Значение по умолчанию — true.
Это свойство полезно при запуске dotnet publish в файле решения, так как позволяет автоматически выбирать проекты, которые должны быть опубликованы.
Свойство PreserveCompilationContext позволяет собранному или опубликованному приложению компилировать дополнительный код во время выполнения с теми же параметрами, которые использовались во время сборки. Сборки, ссылки на которые были указаны во время сборки, будут скопированы в подкаталог ref выходного каталога. Имена базовых сборок хранятся в файле .deps.json приложения вместе с параметрами, передаваемыми компилятору. Эту информацию можно получить с помощью свойств DependencyContext.CompileLibraries и DependencyContext.CompilationOptions.
Эта функциональность в основном используется внутри системы для поддержки компиляции файлов Razor во время выполнения на страницах MVC и Razor ASP.NET Core.
Свойство PreserveCompilationReferences аналогично свойству PreserveCompilationContext за исключением того, что при его использовании в каталог публикации копируются только указанные ссылками сборки, но не копируется файл .deps.json.
В .NET 5 и более ранних версиях базовые сборки всегда записываются в каталог OutDir. В .NET 6 и более поздних версиях можно использовать свойство ProduceReferenceAssemblyInOutDir для управления записью базовых сборок в каталог OutDir. По умолчанию используется значение false, и базовые сборки записываются только в каталог IntermediateOutputPath. Задайте значение true, чтобы записывать базовые сборки в каталог OutDir.
Если это свойство имеет trueзначение, XML-файл документации для проекта, если он создается, включается в выходные данные публикации для проекта. По умолчанию свойство имеет значение true.
Совет
Присвойте GenerateDocumentationFile значение true для создания XML-файла документации во время компиляции.
PublishDocumentationFiles
Это свойство является флагом включения для нескольких других свойств, которые определяют, копируются ли различные типы XML-файлов документации в каталог публикации по умолчанию, а именно PublishDocumentationFile и PublishReferencesDocumentationFiles. Если эти свойства не заданы, и это свойство задано, эти свойства по умолчанию будут заданы true. По умолчанию свойство имеет значение true.
PublishReferencesDocumentationFiles
Если это свойство, trueXML-файлы документации для ссылок проекта копируются в каталог публикации, а не просто ресурсы во время выполнения, такие как DLL-файлы. По умолчанию свойство имеет значение true.
PublishRelease
Свойство PublishRelease сообщает dotnet publish о необходимости использовать по умолчанию конфигурацию Release вместо Debug. Это свойство было введено в .NET 7.
Начиная с пакета SDK для .NET 8, PublishRelease по умолчанию используется true для проектов, предназначенных для .NET 8 или более поздней версии. Дополнительные сведения см. в разделе "Dotnet publish" (Публикация dotnet) использует конфигурацию выпуска.
Это свойство не влияет на поведение dotnet build /t:Publish, и оно изменяет конфигурацию только при публикации с помощью .NET CLI.
Только пакет SDK для .NET 7. Чтобы использовать PublishRelease в проекте, который является частью решения Visual Studio, необходимо задать для переменной DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONStrue среды значение (или любое другое значение). Если эта переменная включена при публикации решения, приоритет отдается значению PublishRelease исполняемого проекта, и новая конфигурация по умолчанию задается всем остальным проектам в решении. Если в решении содержится несколько исполняемых проектов или проектов верхнего уровня, значения PublishRelease которых различаются, публикация решения завершится сбоем. Для решений, имеющих множество проектов, использование этого параметра увеличивает время, необходимое для публикации.
PublishSelfContained
Свойство PublishSelfContained сообщает dotnet publish о публикации приложения в качестве автономного приложения. Это свойство полезно, если не удается использовать --self-contained аргумент для команды dotnet publish , например при публикации на уровне решения. В этом случае можно добавить свойство MSBuild в PublishSelfContained проект или файл Directory.Build.Props .
Это свойство было введено в .NET 7. Это похоже на свойство SelfContained , за исключением того, что оно зависит от publish команды. Вместо этого PublishSelfContainedрекомендуется использовать SelfContained .
Свойство RollForward управляет тем, как приложение выбирает среду выполнения, если доступно несколько версий. Это значение выводится в .runtimeconfig.js в качестве параметра rollForward.
Задайте для RollForward одно из следующих значений:
значение
Описание
Minor
Значение по умолчанию, если не указано. Накат до дополнительной версии со следующим по порядку возрастания номером, если запрошенная дополнительная версия отсутствует. Если запрошенная дополнительная версия присутствует, используется политика LatestPatch.
Major
Накат до следующей доступной основной версии или следующей дополнительной версии с наименьшим номером, если запрошенная дополнительная версия отсутствует. Если запрошенная дополнительная версия присутствует, используется политика Minor.
LatestPatch
Накат до версии с наибольшим номером исправления. Это значение отключает накат до дополнительных версий.
LatestMinor
Накат до дополнительной версии с наибольшим номером, даже если запрошенная дополнительная версия присутствует.
LatestMajor
Накат до основной версии с наибольшим номером и дополнительной версии с наибольшим номером, даже если запрошенная основная версия присутствует.
Disable
Не выполнять накат, привязывать только к указанной версии. Эта политика не рекомендуется для общего использования, поскольку отключает возможность наката до последних исправлений. Это значение рекомендуется использовать только для тестирования.
При публикации приложения, зависящего от платформы, это значение указывает минимальную требуемую версию. При публикации автономного приложения это значение указывает точную требуемую версию.
RuntimeIdentifier
Свойство RuntimeIdentifier позволяет указать для проекта один идентификатор среды выполнения (RID). Идентификатор среды выполнения позволяет опубликовать автономное развертывание.
Свойство RuntimeIdentifiers позволяет указать для проекта список идентификаторов среды выполнения (RID) (в качестве разделителя используется точка с запятой). Используйте это свойство, если вам нужна публикация для нескольких сред.
RuntimeIdentifiers используется во время восстановления для обеспечения наличия в графе нужных ресурсов.
Совет
RuntimeIdentifier (в единственном числе) может ускорить создание сборок, когда требуется только одна среда выполнения.
Свойство SatelliteResourceLanguages позволяет указать, какие языки необходимо сохранить для вспомогательных сборок ресурсов во время сборки и публикации. Многие пакеты NuGet содержат локализованные вспомогательные сборки ресурсов в основном пакете. Для проектов, которые ссылаются на эти пакеты NuGet, но не требуют локализованных ресурсов, локализованные сборки могут без необходимости увеличить размер выходных данных сборки и публикации. Если вы добавите свойство SatelliteResourceLanguages в файл проекта, в выходные данные сборки и публикации будут включены только локализованные сборки для указанных вами языков. Например, в указанном ниже файле проекта будут сохранены только вспомогательные сборки ресурсов на английском (США) и немецком (Германия) языках.
Свойство SelfContained сообщает dotnet build и dotnet publish создает или публикует приложение как автономное приложение. Это свойство полезно, если аргумент нельзя использовать --self-contained с командой dotnet , например при публикации на уровне решения. В этом случае можно добавить свойство MSBuild в SelfContained проект или файл Directory.Build.Props .
Это свойство аналогично свойству PublishSelfContained . Рекомендуется использовать PublishSelfContained вместо того, SelfContained чтобы по возможности.
Свойство UseAppHost контролирует создание собственного исполняемого файла для развертывания. Этот файл требуется для автономных развертываний. Исполняемый файл, зависящий от платформы, создается по умолчанию. Задайте свойству UseAppHost значение false, чтобы отключить создание исполняемого файла.
Доступно множество свойств MSBuild, позволяющих тонко настроить обрезку неиспользуемого кода в автономных развертываниях. Они подробно описаны в статье Параметры обрезки. В следующей таблице приводится краткий справочник.
Свойство
Значения
Описание
PublishTrimmed
true или false
Определяет, включена ли обрезка во время публикации.
TrimMode
full или partial
По умолчанию — full. Управляет степенью детализации обрезки.
SuppressTrimAnalysisWarnings
true или false
Контролирует выдачу предупреждений анализа обрезки.
EnableTrimAnalyzer
true или false
Контролирует выдачу определенного набора предупреждений анализа обрезки. Вы можете включить анализ, даже если PublishTrimmed имеет значение false.
ILLinkTreatWarningsAsErrors
true или false
Определяет, рассматривать ли предупреждения об обрезке как ошибки. Например, вы можете задать этому свойству значение false, если для TreatWarningsAsErrors задано true.
TrimmerSingleWarn
true или false
Определяет, отображать ли по одному предупреждению на сборку или все предупреждения.
TrimmerRemoveSymbols
true или false
Определяет, удалять ли все символы из приложения с обрезкой.
Свойства, связанные со сборкой
В этом разделе описаны следующие свойства MSBuild:
Параметры компилятора C#, такие как LangVersion и Nullable, также можно указать в качестве свойств MSBuild в файле проекта. Дополнительные сведения см. в разделе Параметры компилятора C#.
ContinuousIntegrationBuild
Свойство ContinuousIntegrationBuild указывает, выполняется ли сборка на сервере непрерывной интеграции (CI). Если задано значение true, это свойство включает параметры, которые применяются только к официальным сборкам, а не к локальным сборкам на компьютере разработчика. Например, хранимые пути к файлам нормализуются для официальных сборок. Но на локальном компьютере разработки отладчик не может найти локальные исходные файлы, если пути к файлам нормализуются.
Примечание
В настоящее время установка этого свойства true работает только в том случае, если вы добавляете ссылку на определенный пакет поставщика SourceLink или <SourceRoot Include="$(MyDirectory)" /> элемент. Дополнительные сведения см. в статье dotnet/roslyn issue 55860.
Для условного ContinuousIntegrationBuild задания свойства можно использовать переменную системы CI. Например, имя переменной для Azure Pipelines:TF_BUILD
Если для этого свойства задано trueзначение, все файлы символов (также известные как PDB-файлы) из PackageReference элементов проекта копируются в выходные данные сборки. Эти файлы могут предоставлять более информативные трассировки стека для исключений и сделать дампы памяти и трассировки запущенного приложения проще понять. Однако в том числе эти файлы приводят к увеличению размера пакета развертывания.
Это свойство было введено в пакете SDK для .NET 7.0.100, хотя оно по умолчанию не указано.
CopyDocumentationFilesFromPackages
Если для этого свойства задано trueзначение, все созданные XML-файлы документации из PackageReference элементов проекта копируются в выходные данные сборки. Обратите внимание, что включение этой функции приведет к увеличению размера пакета развертывания.
Это свойство было введено в пакете SDK для .NET 7.0.100, хотя оно по умолчанию не указано.
DisableImplicitFrameworkDefines
Свойство DisableImplicitFrameworkDefines определяет, должен ли пакет SDK создавать символы препроцессора для требуемой версии .NET Framework и платформы проекта .NET. Если свойство имеет значение false или не задано (значение по умолчанию), то символы препроцессора создаются для следующего:
Framework без версии (NETFRAMEWORK, NETSTANDARD, NET)
Framework с версией (NET48, NETSTANDARD2_0, NET6_0)
Framework с минимальной границей версии (NET48_OR_GREATER, NETSTANDARD2_0_OR_GREATER, NET6_0_OR_GREATER)
Дополнительные сведения о моникерах целевой платформы и этих неявных символах препроцессора см. в статье Требуемые версии .NET Framework.
Кроме того, если указать в проекте требуемую версию .NET Framework для конкретной операционной системы (например, net6.0-android), то создаются следующие символы препроцессора:
Платформа без версии (ANDROID, IOS, WINDOWS)
Платформа с версией (IOS15_1)
Платформа с минимальной границей версии (IOS15_1_OR_GREATER)
Дополнительные сведения о моникерах целевой платформы для конкретных операционных систем см. в разделе TFM для конкретной ОС.
Наконец, если требуемая версия .NET Framework подразумевает поддержку более старых версий Framework, символы препроцессора создаются для этих версий. Например, net6.0подразумевает поддержку net5.0 и т. д .netcoreapp1.0. Таким образом, для каждой из этих версий .NET Framework будет определен символ Framework с минимальной границей версии.
DocumentationFile
Свойство DocumentationFile позволяет указать имя файла XML, содержащего документацию для библиотеки. Для правильной работы IntelliSense с вашей документацией имя файла должно совпадать с именем сборки и находиться в том же каталоге, что и сборка. Если вы не определили это свойство, но задали для GenerateDocumentationFile значение true, именем файла документации по умолчанию будет имя вашей сборки, но с расширением файла .xml. По этой причине часто проще опустить это свойство и использовать вместо него свойство GenerateDocumentationFile.
Если вы определили это свойство, но для GenerateDocumentationFile задали значение false, компилятор не создаст файл документации. Если вы определили это свойство и опустили GenerateDocumentationFile, компилятор создаст файл документации.
Свойство EmbeddedResourceUseDependentUponConvention определяет, будет ли использоваться информация о типах в исходных файлах, расположенных в одной папке с файлами ресурсов, для создания имен файлов манифеста этих ресурсов. Например, если Form1.resx находится в той же папке, что и Form1.cs, а EmbeddedResourceUseDependentUponConvention имеет значение true, то созданному файл .resources присваивается имя на основе имени первого типа, определенного в файле Form1.cs. Если MyNamespace.Form1 это первый тип, определенный в Form1.cs, то созданное имя файла — MyNamespace.Form1.resources.
Примечание
Если для LogicalName элемента заданы метаданные ManifestResourceName, DependentUpon или EmbeddedResource, то имя файла манифеста для этого файла ресурсов будет создаваться на основе таких метаданных.
По умолчанию в новом проекте .NET, который предназначен для .NET Core 3.0 или более поздней версии, это свойство имеет значение true. Если задано значение false и для элемента LogicalName в файле проекта не указаны метаданные ManifestResourceName, DependentUpon или EmbeddedResource, то имя файла манифеста для этого ресурса будет основано на имени корневого пространства имен проекта и относительном пути к файлу .resx. Дополнительные сведения об определение имени файла манифеста см. здесь.
Свойство EnablePreviewFeatures определяет, зависит ли ваш проект от каких-либо API или сборок, снабженных атрибутом RequiresPreviewFeaturesAttribute. Этот атрибут используется для обозначения того, что API или сборка использует функции, которые считаются предварительными версиями для версии пакета SDK, которую вы используете. Предварительные версии функций не поддерживаются и могут быть удалены в будущих версиях. Чтобы включить предварительные версии функций, задайте для свойства значение True.
Если проект содержит свойство, для которого задано значение True, в файл AssemblyInfo.cs добавляется следующий атрибут уровня сборки:
C#
[assembly: RequiresPreviewFeatures]
Анализатор выдает предупреждение, если этот атрибут имеется в зависимостях для проектов, где для EnablePreviewFeatures не задано значение True.
Авторы библиотек, которые планируют поставлять сборки с предварительными версиями функций, присвойте этому свойству значение True. Если в поставляемую сборку входят как предварительные, так и другие версии API, см. раздел GenerateRequiresPreviewFeaturesAttribute.
EnableWindowsTargeting
EnableWindowsTargeting Задайте свойство для true создания приложений Windows (например, приложений Windows Forms или Windows Presentation Foundation) на платформе, отличной от Windows. Если это свойство trueне задано, вы получите предупреждение о сборке NETSDK1100. Эта ошибка возникает, так как целевые пакеты и пакеты среды выполнения не загружаются автоматически на платформах, которые не поддерживаются. Задав это свойство, эти пакеты загружаются при перекрестном нацеливанию.
Примечание
Сейчас это свойство рекомендуется разрешить разработку на платформах, отличных от Windows. Но когда приложение готово к выпуску, оно должно быть создано в Windows. При построении на платформе, отличной от Windows, выходные данные могут совпадать с тем, что при сборке в Windows. В частности, исполняемый файл не помечен как приложение Windows (это означает, что он всегда будет запускать окно консоли) и не будет внедрен значок.
Свойство GenerateDocumentationFile определяет, создаст ли компилятор файл документации XML для вашей библиотеки. Если вы задали для этого свойства значение true и не указали имя файла через свойство DocumentationFile, сгенерированный файл XML будет помещен в тот же выходной каталог, что и ваша сборка, и будет иметь то же имя файла (но с расширением .xml).
Свойство GenerateRequiresPreviewFeaturesAttribute тесно связано со свойством EnablePreviewFeatures. Если ваша библиотека использует предварительные версии функций, но вы не хотите, чтобы вся сборка была помечена атрибутом RequiresPreviewFeaturesAttribute, что потребует от всех потребителей включения предварительных версий функций, присвойте этому свойству значение False.
Если свойству GenerateRequiresPreviewFeaturesAttribute задано значение False, вы должны быть уверены в том, что все общедоступные API, использующие предварительные версии функций, будет присвоен атрибут RequiresPreviewFeaturesAttribute.
OptimizeImplicitlyTriggeredBuild
Чтобы сократить время сборки, для неявно активированных Visual Studio сборок пропускается анализ кода, включая анализ типов, допускающих значения NULL. Visual Studio активирует неявную сборку, например, при выполнении тестов. Однако неявные сборки оптимизируются только в том случае, если TreatWarningsAsErrors не имеет значение true. Если для параметра TreatWarningsAsErrors задано значение true, но вы все равно хотите оптимизировать неявно активированные сборки, можно задать для OptimizeImplicitlyTriggeredBuild значение True. Чтобы отключить оптимизацию неявно активированных сборок, присвойте параметру OptimizeImplicitlyTriggeredBuild значение False.
Свойство DisableRuntimeMarshalling позволяет указать, что вы хотите отключить поддержку маршаллинга среды выполнения для проекта. Если для этого свойства задано trueзначение, то добавляется в сборку, DisableRuntimeMarshallingAttribute а все P/Invokes или делегаты взаимодействия будут следовать правилам для отключаемой маршаллинга среды выполнения.
Используйте свойство DefaultItemExcludes, чтобы определить стандартные маски для файлов и папок, которые должны быть исключены из стандартных масок включения, исключения и удаления. По умолчанию папки ./bin и ./obj исключаются из стандартных масок.
Используйте свойство DefaultItemExcludesInProjectFolder, чтобы определить стандартные маски для файлов и папок в папке проекта, которые должны быть исключены из стандартных масок включения, исключения и удаления. По умолчанию папки, начинающиеся с точки (.), такие как .git и .vs, исключаются из стандартных масок.
Это свойство очень похоже на свойство DefaultItemExcludes, за исключением того, что оно учитывает только файлы и папки в папке проекта. Если стандартная маска будет случайно соответствовать элементам за пределами папки проекта с относительным путем, используйте свойство DefaultItemExcludesInProjectFolder вместо свойства DefaultItemExcludes.
Свойство EnableDefaultItems определяет, включаются ли в проект неявным образом элементы компиляции, элементы внедренных ресурсов и элементы None. Значение по умолчанию — true. Задайте значение EnableDefaultItems для свойства false, чтобы отключить все неявные включения файлов.
Свойство EnableDefaultCompileItems определяет, включаются ли в проект неявным образом элементы компиляции. Значение по умолчанию — true. Задайте значение EnableDefaultCompileItems для свойства false, чтобы отключить неявное включение файлов *.cs и других файлов расширения языка.
Свойство EnableDefaultEmbeddedResourceItems определяет, включаются ли в проект неявным образом элементы внедренных ресурсов. Значение по умолчанию — true. Задайте значение EnableDefaultEmbeddedResourceItems для свойства false, чтобы отключить неявное включение файлов внедренных ресурсов.
Свойство EnableDefaultNoneItems определяет, включаются ли в проект неявным образом элементы None (файлы, которые не играют никакой роли в процессе сборки). Значение по умолчанию — true. Задайте значение EnableDefaultNoneItems для свойства false, чтобы отключить неявное включение элементов None.
Свойство AnalysisLevel позволяет указать набор выполняемых анализаторов кода в соответствии с выпуском .NET. Каждый выпуск .NET содержит набор правил анализа кода. Из этого набора правила, включенные по умолчанию для этого выпуска, анализируют код. Например, при обновлении с .NET 8 до .NET 9, но не требуется изменить набор правил анализа кода по умолчанию.AnalysisLevel8
При необходимости можно указать составное значение для этого свойства, которое также указывает, как агрессивно включить правила. Составные значения имеют такой вид: <version>-<mode>, где в качестве значения <mode> указано одно из значений AnalysisMode. В следующем примере используется preview версия анализаторов кода и включается recommended набор правил.
Если проект предназначен для .NET 5 или более поздней версии либо если вы добавили свойство AnalysisMode, значением по умолчанию будет latest.
В противном случае это свойство не будет учитываться, если оно явно не добавлено в файл проекта.
В следующей таблице приведены все значения, которые можно задать.
значение
Значение
latest
Используются новейшие анализаторы кода, которые были выпущены. Это значение по умолчанию.
latest-<mode>
Используются новейшие анализаторы кода, которые были выпущены. Значение <mode> определяет, какие правила включены.
preview
Используются новейшие анализаторы кода, даже если они находятся на этапе предварительной версии.
preview-<mode>
Используются новейшие анализаторы кода, даже если они находятся на этапе предварительной версии. Значение <mode> определяет, какие правила включены.
9.0
Используется набор правил, доступных для выпуска .NET 9, даже если доступны более новые правила.
9.0-<mode>
Используется набор правил, доступных для выпуска .NET 9, даже если доступны более новые правила. Значение <mode> определяет, какие правила включены.
9
Используется набор правил, доступных для выпуска .NET 9, даже если доступны более новые правила.
9-<mode>
Используется набор правил, доступных для выпуска .NET 9, даже если доступны более новые правила. Значение <mode> определяет, какие правила включены.
8.0
Используется набор правил, доступных для выпуска .NET 8, даже если новые правила доступны.
8.0-<mode>
Используется набор правил, доступных для выпуска .NET 8, даже если новые правила доступны. Значение <mode> определяет, какие правила включены.
8
Используется набор правил, доступных для выпуска .NET 8, даже если новые правила доступны.
8-<mode>
Используется набор правил, доступных для выпуска .NET 8, даже если новые правила доступны. Значение <mode> определяет, какие правила включены.
7.0
Используется набор правил, доступных для выпуска .NET 7, даже если доступны более новые правила.
7.0-<mode>
Используется набор правил, доступных для выпуска .NET 7, даже если доступны более новые правила. Значение <mode> определяет, какие правила включены.
7
Используется набор правил, доступных для выпуска .NET 7, даже если доступны более новые правила.
7-<mode>
Используется набор правил, доступных для выпуска .NET 7, даже если доступны более новые правила. Значение <mode> определяет, какие правила включены.
Примечание
Если задано , это свойство влияет на true стиля кода (IDEXXXXXX) (в дополнение к правилам качества кода).
Если для AnalysisLevel задано составное значение, указывать AnalysisMode не нужно. Иначе AnalysisLevel будет иметь приоритет над AnalysisMode.
Это свойство не влияет на анализ кода в проектах, которые не ссылаются на пакет SDK проекта, например, проекты на устаревших платформах .NET Framework, которые ссылаются на пакет NuGet Microsoft.CodeAnalysis.NetAnalyzers.
AnalysisLevel<Категория>
Это свойство совпадает с AnalysisLevel, за исключением того, что оно применяется только к определенной категории правил анализа кода. Это свойство позволяет применить другую версию анализаторов кода для определенной категории, а также включать и отключать правила на другом уровне для других категорий правил. Если опустить это свойство для определенной категории правил, по умолчанию будет использоваться значение AnalysisLevel. Для этого свойства доступны такие же значения, как для AnalysisLevel.
Пакет SDK для .NET поставляется со всеми правилами качества кода ЦС. По умолчанию в каждом выпуске .NET в качестве предупреждений о сборке включены только некоторые правила. Свойство AnalysisMode позволяет настроить набор правил, включенных по умолчанию. Вы можете переключиться в более агрессивный режим анализа с возможностью отказа от правил по отдельности, или более консервативный режим с возможностью выбора определенных правил. Например, если вы хотите включить все правила как предупреждения сборки, задайте значение All.
В следующей таблице показаны доступные значения параметров. Эти параметры перечислены в порядке возрастания количества правил, которые они включают.
значение
Описание
None
Все правила отключены. Можно выборочно принять отдельные правила, чтобы включить их.
Default
Режим по умолчанию, при котором определенные правила включаются в виде предупреждений сборки, некоторые правила включаются в качестве предложений интегрированной среды разработки Visual Studio, а остальные отключаются.
Minimum
Более агрессивный режим, чем Default режим. Определенные предложения, которые настоятельно рекомендуются для принудительного применения сборки, включены как предупреждения сборки. Чтобы узнать, какие правила включаются, проверьте %ProgramFiles%/dotnet/sdk/[версия]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig файл. (Для .NET 7 и более ранних версий расширение файла .editorconfig.)
Recommended
Более агрессивный режим, чем Minimum режим, где в качестве предупреждений сборки включены дополнительные правила. Чтобы узнать, какие правила включаются, проверьте %ProgramFiles%/dotnet/sdk/[версия]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig файл. (Для .NET 7 и более ранних версий расширение файла .editorconfig.)
All
Все правила включены в качестве предупреждений сборки*. Вы можете выборочно отказаться от отдельных правил, чтобы отключить их.
* Следующие правила ). Эти устаревшие правила могут быть устаревшими в будущей версии. Однако их можно включить по отдельности dotnet_diagnostic.CAxxxx.severity = <severity> с помощью записи.
Примечание
Если задано , это свойство влияет на true стиля кода (IDEXXXXXX) (в дополнение к правилам качества кода).
Если вы используете составное значение для AnalysisLevel, например <AnalysisLevel>9-recommended</AnalysisLevel>, это свойство можно опустить. Но если указать оба свойства, AnalysisLevel будет иметь приоритет над AnalysisMode.
Это свойство не влияет на анализ кода в проектах, которые не ссылаются на пакет SDK проекта, например, проекты на устаревших платформах .NET Framework, которые ссылаются на пакет NuGet Microsoft.CodeAnalysis.NetAnalyzers.
AnalysisMode<Категория>
Это свойство совпадает с AnalysisMode, за исключением того, что оно применяется только к определенной категории правил анализа кода. Это свойство позволяет включать и отключать правила на другом уровне для других категорий правил. Если опустить это свойство для определенной категории правил, по умолчанию будет использоваться значение AnalysisMode. Для этого свойства доступны такие же значения, как для AnalysisMode.
Свойство CodeAnalysisTreatWarningsAsErrors позволяет настроить, следует ли обрабатывать предупреждения анализа качества кода (CAxxxx) как предупреждения и прекращать сборку. Если при построении проектов используется флаг -warnaserror, предупреждения анализа качества кода .NET также обрабатываются как ошибки. Если вы не хотите, чтобы предупреждения качества кода обрабатывались как ошибки, можно задать для свойства MSBuild CodeAnalysisTreatWarningsAsErrors значение false в файле проекта.
Для проектов, предназначенных для .NET 5 или более поздней версии, по умолчанию включен анализ качества кода .NET. Если при разработке вы используете пакет SDK NET 5+, вы можете включить анализ кода .NET для проектов в стиле пакета SDK, предназначенных для более ранних версий .NET, установив для свойства EnableNETAnalyzers значение true. Чтобы отключить анализ кода в любом проекте, присвойте этому свойству значение false.
Это свойство применяется к встроенным анализаторам в пакете SDK для .NET 5+. Его не следует использовать при установке пакета NuGet для анализа кода.
EnforceCodeStyleInBuild
Анализ стиля кода .NET по умолчанию отключен при сборке для всех проектов .NET. Можно включить анализ стиля кода для проектов .NET, задав для свойства EnforceCodeStyleInBuild значение true.
Все правила стиля кода, которые настроены как предупреждения или ошибки, будут выполняться при нарушениях сборки и отчета.
_SkipUpgradeNetAnalyzersNuGetWarning
Свойство _SkipUpgradeNetAnalyzersNuGetWarning позволяет настроить выдачу предупреждений, когда используемые анализаторы кода из пакета NuGet имеют устаревшую версию по сравнению с анализаторами из последнего пакета SDK для .NET. Предупреждение выглядит примерно так:
Пакет SDK для .NET включает анализаторы с версией "6.0.0", которая новее, чем "5.0.3" из пакета "Microsoft.CodeAnalysis.NetAnalyzers". Обновите или удалите ссылку на этот пакет.
Чтобы убрать это предупреждение и продолжить использовать версию анализаторов кода из пакета NuGet, задайте для _SkipUpgradeNetAnalyzersNuGetWarning значение true в файле проекта.
Некоторые действия среды выполнения можно настроить, указав свойства MSBuild в файле проекта приложения. Дополнительные сведения о других способах настройки поведения среды выполнения см. в разделе "Параметры конфигурации среды выполнения".
Свойство AutoreleasePoolSupport настраивает, получает ли каждый управляемый поток неявный NSAutoreleasePool при запуске на поддерживаемой платформе macOS. Дополнительные сведения см. в разделе AutoreleasePool об управляемых потоках.
Свойство InvariantGlobalization определяет, выполняется ли приложение в инвариантном режиме глобализации, что означает, что у него нет доступа к данным, относящимся к языку и региональным параметрам. Установите значение true для запуска в инвариантном режиме глобализации. Дополнительные сведения см. в разделе Инвариантный режим.
В .NET 6 и более поздних версиях свойство PredefinedCulturesOnly определяет, могут ли приложения создавать языки и региональные параметры, отличные от инвариантных, если включен инвариантный режим глобализации. Значение по умолчанию — true. Установите значение false, чтобы разрешить создание языка и региональных параметров в инвариантном режиме глобализации.
Свойство RetainVMGarbageCollection настраивает сборщик мусора для помещения удаленных сегментов памяти в список ожидания для будущего использования или освобождения. Значение true указывает сборщику мусора разместить сегменты в списке ожидания. Дополнительные сведения см. в разделе Сохранение виртуальной машины.
Свойство ThreadPoolMaxThreads указывает максимальное число потоков для пула рабочих потоков. Дополнительные сведения см. в разделе Максимальное число потоков.
Свойство ThreadPoolMinThreads указывает минимальное число потоков для пула рабочих потоков. Дополнительные сведения см. в разделе Минимальное число потоков.
Свойство TieredCompilation указывает, использует ли JIT-компилятор многоуровневую компиляцию. Задайте значение false, чтобы отключить многоуровневую компиляцию. Дополнительные сведения см. в разделе Многоуровневая компиляция.
Свойство TieredCompilationQuickJit указывает, использует ли JIT-компилятор быструю JIT-компиляцию. Задайте значение false, чтобы отключить быструю JIT-компиляцию. Дополнительные сведения см. в разделе Быстрая JIT-компиляция.
Свойство TieredCompilationQuickJitForLoops указывает, использует ли JIT-компилятор быструю JIT-компиляцию для методов, содержащих циклы. Задайте значение true, чтобы включить быструю JIT-компиляцию для методов, содержащих циклы. Дополнительные сведения см. в разделе Быстрая JIT-компиляция для циклов.
Свойство TieredPGO определяет, включена ли динамическая или многоуровневая оптимизация (PGO). Задайте значение для true включения многоуровневого PGO. Дополнительные сведения см. в разделе "Оптимизация с помощью профилей".
Свойство UseWindowsThreadPool настраивает делегирование управления потоками пула потоков в пул потоков Windows (только Для Windows). Значением по умолчанию является falseпул потоков .NET. Дополнительные сведения см. в пуле потоков Windows.
Свойство AssetTargetFallback позволяет указать дополнительные совместимые версии платформы для ссылок на проекты и пакетов NuGet. Например, если вы указали зависимость пакета с помощью PackageReference, но в этом пакете нет ресурсов, совместимых с TargetFramework вашего проекта, тогда пригодится свойство AssetTargetFallback. Совместимость пакета, на который указывает ссылка, повторно проверяется с помощью каждой целевой платформы, указанной в свойстве AssetTargetFallback. Это свойство заменяет устаревшее свойство PackageTargetFallback.
В качестве значения свойства AssetTargetFallback можно задать одну версию целевой платформы или несколько.
Свойство DisableImplicitFrameworkReferences управляет неявными элементами FrameworkReference при разработке для .NET Core 3.0 и более поздних версий. При использовании .NET Core 2.1 или .NET Standard 2.0 и более ранних версий оно управляет неявными элементами PackageReference в пакетах в метапакете. (Метапакет — это пакет на основе платформы, который состоит только из зависимостей от других пакетов.) Это свойство также управляет неявными ссылками, такими как System и System.Core, если оно предназначено для использования на платформе .NET Framework.
Задайте для этого свойства значение, чтобы true отключить неявные элементы FrameworkReference или PackageReference. Если этому свойству присвоено значение true, можно добавить явные ссылки на только необходимые платформы или пакеты.
DisableTransitiveFrameworkReferenceDownloads Задайте свойство, чтобы true избежать загрузки дополнительных пакетов среды выполнения и целевых пакетов, на которые не ссылается проект напрямую.
Свойство DisableTransitiveProjectReferences управляет неявными ссылками на проекты. Задайте этому свойству значение true, чтобы отключить неявные элементы ProjectReference. Отключение неявных ссылок на проекты вызовет нетранзитивное поведение, аналогичное поведению в устаревшей системе проектов.
Задание этому свойству значения true аналогично заданию PrivateAssets="All" во всех зависимостях главного проекта.
Если этому свойству задано значение true, можно добавить явные ссылки на только необходимые проекты.
Свойство ManagePackageVersionsCentrally было введено в .NET 7. Задав его true в файле Directory.Packages.props в корне репозитория, вы можете управлять общими зависимостями в проектах из одного расположения. Добавьте версии для распространенных зависимостей пакетов с помощью PackageVersion элементов в файле Directory.Packages.props . Затем в отдельных файлах проекта можно опустить Version атрибуты из любых PackageReference элементов, ссылающихся на централизованно управляемые пакеты.
При восстановлении пакета, на который указывает ссылка, устанавливаются все его прямые зависимости и все зависимости этих зависимостей. Можно настроить восстановление пакетов, указав такие свойства, как RestorePackagesPath и RestoreIgnoreFailedSources. Дополнительные сведения об этих и других свойствах см. в разделе целевой объект восстановления.
UseMauiEssentials Задайте для свойства true объявление явной ссылки на проект или пакет, который зависит от MAUI Essentials. Этот параметр гарантирует, что проект извлекает правильную ссылку на известную платформу для MAUI Essentials. Если проект ссылается на проект, использующий MAUI Essentials, но этот параметр trueне задан, может возникнуть предупреждение о NETSDK1186сборке.
Свойство ValidateExecutableReferencesMatchSelfContained можно использовать для отключения ошибок, связанных с ссылками на исполняемый проект. Если .NET обнаруживает, что автономный исполняемый проект ссылается на зависящий от платформы исполняемый проект или наоборот, он создает ошибки NETSDK1150 и NETSDK1151 соответственно. Чтобы избежать этих ошибок при намеренном создании ссылки, присвойте свойству ValidateExecutableReferencesMatchSelfContained значение false.
Свойство WindowsSdkPackageVersion можно использовать для переопределения версии пакета нацеливания Windows SDK. Это свойство было добавлено в .NET 5 и заменило элемент FrameworkReference для этой цели.
Не рекомендуется переопределять версию Windows SDK, так как пакеты нацеливания для Windows SDK включены в пакет SDK для .NET 5+. Вместо этого для ссылки на последний пакет Windows SDK обновите версию пакета SDK для .NET. Это свойство должно использоваться только в редких случаях, например при использовании предварительных версий пакетов или при необходимости переопределения версии C#/WinRT.
Свойства, связанные с запуском
Следующие свойства используются для запуска приложения с помощью команды dotnet run:
Можно указать дополнительные аргументы для передачи в приложение с помощью параметра -- для dotnet run.
RunWorkingDirectory
Свойство RunWorkingDirectory определяет рабочий каталог для запуска процесса приложения. Это может быть абсолютный путь или путь относительно каталога проекта. Если каталог не указан, в качестве рабочего каталога используется OutDir.
В .NET 9 SdkAnalysisLevel свойство можно использовать для настройки строгого средства SDK. Это помогает управлять уровнями предупреждений пакета SDK в ситуациях, когда вы не сможете закреплять пакеты SDK с помощью global.json или других средств. Это свойство можно использовать для того, чтобы сообщить новому пакету SDK вести себя так, как если бы он был старым пакетом SDK, что касается определенного инструмента или компонента, не устанавливая старый пакет SDK.
Допустимые значения этого свойства — это полосы функций ПАКЕТА SDK, например 8.0.100 и 8.0.400. Значение по умолчанию используется для группы компонентов пакета SDK для запущенного пакета SDK. Например, для пакета SDK 9.0.102 значение будет равно 9.0.100. (Сведения о том, как версию пакета SDK для .NET см. в разделе .Как версия .NET.)
Свойство IsTestProject означает, что проект является тестируемым проектом. Если для этого свойства задано trueзначение , проверка, чтобы проверить, ссылается ли проект на автономный исполняемый файл. Это связано с тем, что тестовые проекты имеют но OutputTypeExe обычно вызывают API в ссылаемом исполняемом файле, а не пытается запустить. Кроме того, если проект ссылается на проект, для которого IsTestProject задано значение true, тестовый проект не проверяется как ссылка на исполняемый файл.
Это свойство в основном необходимо для dotnet test сценария и не влияет на использование vstest.console.exe.
Примечание
Если проект задает пакет SDK MSTest, вам не нужно задавать это свойство. Он устанавливается автоматически. Аналогичным образом это свойство устанавливается автоматически для проектов, ссылающихся на пакет NuGet Microsoft.NET.Test.Sdk, связанный с VSTest.
IsTestingPlatformApplication
Если проект ссылается на пакет Microsoft.Testing.Platform.MSBuild, установите значение IsTestingPlatformApplicationtrue (которое также является значением по умолчанию, если не указано) выполняет следующие действия:
Создает точку входа в тестовый проект.
Создает файл конфигурации.
Обнаруживает расширения.
Задание свойства для false отключения транзитивной зависимости для пакета. Транзитивная зависимость заключается в том, что проект, ссылающийся на другой проект, который ссылается на данный пакет, ведет себя так, как если он ссылается на пакет. Обычно это свойство задано в проекте, отличном от тестирования, который ссылается false на тестовый проект. Дополнительные сведения см. в разделе об ошибке CS8892.
Если тестовый проект ссылается на MSTest, NUnit или xUnit, это свойство имеет то же значение, что и EnableMSTestRunner, EnableNUnitRunner или UseMicrosoftTestingPlatformRunner (для xUnit).
Enable[NugetPackageNameWithoutDots]
Используйте свойство с шаблоном Enable[NugetPackageNameWithoutDots] , чтобы включить или отключить расширения Microsoft.Testing.Platform.
Например, чтобы включить расширение аварийного дампа (пакет NuGet Microsoft.Testing.Extensions.CrashDump), задайте для EnableMicrosoftTestingExtensionsCrashDumpпараметра true значение .
При использовании пакета SDK для проекта MSTest можно использовать EnableAspireTesting свойство для внедрения всех зависимостей и директив по умолчанию using , необходимых для тестирования с помощью Aspire и MSTest. Это свойство доступно в MSTest 3.4 и более поздних версиях.
При использовании пакета SDK для проекта MSTest можно использовать EnablePlaywright свойство для внедрения всех зависимостей и директив по умолчанию using , необходимых для тестирования с помощью Playwright и MSTest. Это свойство доступно в MSTest 3.4 и более поздних версиях.
Свойство EnableMSTestRunner включает или отключает использование средства выполнения MSTest. Средство выполнения MSTest — это упрощенная и переносимая альтернатива VSTest. Это свойство доступно в MSTest 3.2 и более поздних версиях.
Примечание
Если проект задает пакет SDK MSTest, вам не нужно задавать это свойство. Он устанавливается автоматически.
EnableNUnitRunner
Свойство EnableNUnitRunner включает или отключает использование средства выполнения NUnit. Средство выполнения NUnit — это упрощенная и переносимая альтернатива VSTest. Это свойство доступно в NUnit3TestAdapter версии 5.0 и более поздних версий.
GenerateTestingPlatformEntryPoint
Задание свойства GenerateTestingPlatformEntryPoint для false отключает автоматическое создание точки входа программы в тестовом проекте MSTest или NUnit. Это свойство false может потребоваться задать, если вы вручную определяете точку входа или при ссылке на тестовый проект из исполняемого файла, который также имеет точку входа.
Чтобы управлять созданием точки входа в проекте VSTest, используйте GenerateProgramFile это свойство.
TestingPlatformCaptureOutput
Свойство TestingPlatformCaptureOutput определяет, фиксируются ли все выходные данные консоли, записываемые тестируемым исполняемым файлом, и скрыты от пользователя при выполнении dotnet testMicrosoft.Testing.Platform тестов. По умолчанию выходные данные консоли скрыты. Эти выходные данные включают баннер, сведения о версии и отформатированные сведения о тесте. Задайте для этого свойства отображение false этих сведений вместе с выходными данными MSBuild.
Свойство TestingPlatformCaptureOutput позволяет указать аргументы командной строки для тестового приложения при выполнении dotnet testMicrosoft.Testing.Platform тестов. В следующем фрагменте файла проекта показан пример.
Свойство TestingPlatformDotnetTestSupport позволяет указать, используется ли VSTest при выполнении dotnet test тестов. Если для этого свойства задано значение true, VSTest отключен и все Microsoft.Testing.Platform тесты выполняются напрямую.
Если у вас есть решение, содержащее тестовые проекты VSTest, а также проекты MSTest, NUnit или XUnit, необходимо выполнить один вызов для каждого режима (т dotnet test . е. не будет выполнять тесты из VSTest и более новых платформ в одном вызове).
TestingPlatformShowTestsFailure
Свойство TestingPlatformShowTestsFailure позволяет контролировать, сообщается ли один сбой или все ошибки в тестовом тесте сбоем при выполнении dotnet test тестов. По умолчанию тестовые сбои суммируются в файл .log , а в MSBuild сообщается один сбой для каждого тестового проекта. Чтобы отобразить ошибки для каждого неудачного теста, задайте для этого свойства true значение в файле проекта.
TestingExtensionsProfile
При использовании пакета SDKTestingExtensionsProfile проекта MSTest свойство позволяет выбрать профиль для использования. В следующей таблице показаны допустимые значения.
значение
Описание
Default
Включает рекомендуемые расширения для этой версии MSTest.SDK.
None
Расширения не включены.
AllMicrosoft
Включите все расширения, отправленные корпорацией Майкрософт (включая расширения с ограничивающей лицензией).
Дополнительные сведения см. в профиле runner MSTest.
Свойство AppHostDotNetSearch настраивает, как собственный исполняемый файл, созданный для приложения, будет искать установку .NET. Это свойство влияет только на исполняемый файл, созданный при публикации, а не на сборку.
Свойство AppHostRelativeDotNet позволяет указать относительный путь для исполняемого файла приложения, чтобы найти установку .NET при настройке этого.
AppHostRelativeDotNet Установка свойства подразумевает, что AppHostDotNetSearch это AppRelative. Это свойство влияет только на исполняемый файл, созданный при публикации, а не на сборку.
Свойство EnableComHosting указывает, что сборка предоставляет сервер COM. Установка EnableComHosting в true также подразумевает, что EnableDynamicLoading — true.
Это DisableImplicitNamespaceImports свойство можно использовать для отключения неявного импорта пространства имен в проектах Visual Basic, предназначенных для .NET 6 или более поздней версии. Неявные пространства имен — это пространства имен по умолчанию, которые импортируются глобально в проект Visual Basic. Задайте для этого свойства значение true, чтобы отключить импорт неявных пространств имен.
Свойство ImplicitUsings можно использовать для включения и отключения неявных директив global using в проектах C#, предназначенных для .NET 6 или более поздней версии, и C# 10 или более поздней версии. Если эта функция включена, пакет SDK для .NET добавляет директивы global using для набора пространств имен по умолчанию на основе типа пакета SDK для проекта. Задайте для этого свойства значение true или enable, чтобы включить неявные директивы global using. Чтобы отключить неявные директивы global using, удалите свойство или присвойте ему значение false или disable.
В шаблонах для новых проектов C#, предназначенных для .NET 6 или более поздней версии, ImplicitUsings имеет значение enable по умолчанию.
Чтобы определить явную директиву global using, добавьте элемент Using.
Товаров
Элементы MSBuild — это входные данные для системы сборки. Элементы указываются в соответствии с их типом, который является именем элемента. Например, Compile и Reference — два распространенных типа элементов. Пакет SDK для .NET предоставляет следующие дополнительные типы элементов:
Для этих элементов можно использовать любой из стандартных атрибутов элемента, например Include и Update. Чтобы добавить новый элемент, используйте Include. Для изменения существующего элемента используйте Update. Например, Update часто используется для изменения элемента, который неявно был добавлен пакетом SDK для .NET.
AssemblyMetadata
Элемент AssemblyMetadata указывает атрибут сборки пары "ключ-значение" AssemblyMetadataAttribute. Метаданные Include становятся ключом, а метаданные Value становятся значением.
Если дружественная сборка подписана, можно указать дополнительные метаданные Key, чтобы указать его полный открытый ключ. Если не указать метаданные Key и доступен ключ $(PublicKey), используется этот ключ. В противном случае открытый ключ не добавляется к атрибуту.
FrameworkReference
Элемент FrameworkReference определяет ссылку на общую платформу .NET.
Атрибут Include задает идентификатор платформы.
Фрагмент файла проекта в следующем примере ссылается на общую платформу Microsoft.AspNetCore.App.
Элемент PackageReference определяет ссылку на пакет NuGet.
Атрибут Include указывает идентификатор пакета. Атрибут Version указывает версию или диапазон версий. Сведения о том, как указать минимальную версию, максимальную версию, диапазон или точное соответствие, см. в разделе Диапазоны версий.
Фрагмент файла проекта в следующем примере ссылается на пакет System.Runtime.
Элемент TrimmerRootAssembly позволяет исключить сборку из обрезки. Обрезка — это процесс удаления неиспользуемых частей среды выполнения из упакованного приложения. В некоторых случаях при обрезке могут неправильно удаляться необходимые ссылки.
Следующий код XML исключает сборку System.Security из обрезки.
Элемент Using позволяет глобально включать пространство имен в проекте C#, поэтому не нужно добавлять директиву using для пространства имен в верхней части исходных файлов. Этот элемент аналогичен элементу Import, который можно использовать для тех же целей в проектах Visual Basic. Это свойство доступно с версии .NET 6.
Метаданные CopyToPublishDirectory в элементах управления MSBuild, когда элемент копируется в каталог публикации. В следующей таблице показаны допустимые значения.
значение
Описание
PreserveNewest
Копирует только элемент, если он изменился в исходном расположении.
IfDifferent
Копирует элемент только в том случае, если он изменился в исходном или целевом расположении. Этот параметр полезен для ситуаций, когда необходимо сбросить изменения, возникающие после публикации.
Always
Всегда копирует элемент.
Never
Никогда не копирует элемент.
С точки зрения производительности PreserveNewest предпочтительнее, поскольку включает инкрементную сборку. Избегайте использования Always и использования IfDifferent вместо этого, что позволяет избежать операций ввода-вывода без эффекта.
Для элемента, находящегося за пределами каталога проекта и его подкаталогов, целевой объект публикации использует метаданные Link элемента, чтобы определить, куда копировать элемент.
Link также определяет, как элементы за пределами дерева проекта отображаются в окне обозревателя решений Visual Studio.
Если для элемента, находящегося за пределами проекта, Link не указан, по умолчанию используется %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension).
LinkBase позволяет указать допустимую базовую папку для элементов за пределами проекта. Иерархия папок в базовой папке обеспечивается с помощью RecursiveDir. Если параметр LinkBase не указан, он опускается в пути Link.
На следующем рисунке показано, как файл, который включен с помощью стандартной маски предыдущего элемента Include, отображается в обозревателе решений.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.