dotnet builddotnet build

Эта статья применима к: ✓ пакету SDK для .NET Core 1.x пакету SDK для .NET Core 2.xThis topic applies to: ✓ .NET Core SDK 1.x .NET Core SDK 2.x

nameName

dotnet build — собирает проект и все его зависимости.dotnet build - Builds a project and all of its dependencies.

Краткий обзорSynopsis

dotnet build [<PROJECT>|<SOLUTION>] [-c|--configuration] [-f|--framework] [--force] [--no-dependencies] [--no-incremental]
    [--no-restore] [-o|--output] [-r|--runtime] [-v|--verbosity] [--version-suffix]

dotnet build [-h|--help]

ОписаниеDescription

Команда dotnet build выполняет сборку проекта и его зависимостей в набор двоичных файлов.The dotnet build command builds the project and its dependencies into a set of binaries. Эти двоичные файлы содержат код проекта в виде файлов на промежуточном языке с расширением DLL, а также файлы символов для отладки с расширением PDB.The binaries include the project's code in Intermediate Language (IL) files with a .dll extension and symbol files used for debugging with a .pdb extension. Создается JSON-файл зависимостей (*.deps.json), содержащий список зависимостей приложения.A dependencies JSON file (*.deps.json) is produced that lists the dependencies of the application. Создает файл *.runtimeconfig.json, указывающий общую среду выполнения и ее версию для приложения.A *.runtimeconfig.json file is produced, which specifies the shared runtime and its version for the application.

Если проект имеет зависимости от сторонних компонентов, таких как библиотеки из NuGet, они разрешаются из кэша NuGet и недоступны в выходных данных сборки проекта.If the project has third-party dependencies, such as libraries from NuGet, they're resolved from the NuGet cache and aren't available with the project's built output. Учитывая это, продукт dotnet build не готов к переносу на другой компьютер для выполнения.With that in mind, the product of dotnet build isn't ready to be transferred to another machine to run. Это отличается от поведения в .NET Framework, где сборка исполняемого проекта (приложения) создает выходные данные, которые можно запустить на любом компьютере с установленной платформой .NET Framework.This is in contrast to the behavior of the .NET Framework in which building an executable project (an application) produces output that's runnable on any machine where the .NET Framework is installed. Чтобы обеспечить аналогичное поведение в .NET Core, необходимо использовать команду dotnet publish.To have a similar experience with .NET Core, you need to use the dotnet publish command. Дополнительные сведения см. в разделе Развертывание приложений .NET Core.For more information, see .NET Core Application Deployment.

Для сборки нужен файл project.assets.json, содержащий список зависимостей приложения.Building requires the project.assets.json file, which lists the dependencies of your application. Он создается при выполнении команды dotnet restore.The file is created when dotnet restore is executed. Без файла ресурсов инструментарий не способен разрешать базовые сборки, что приводит к ошибкам.Without the assets file in place, the tooling cannot resolve reference assemblies, which results in errors. При использовании пакета SDK для .NET Core 1.x необходимо было явным образом выполнять команду dotnet restore перед выполнением dotnet build.With .NET Core 1.x SDK, you needed to explicitly run the dotnet restore before running dotnet build. Начиная с версии SDK для .NET Core 2.0 команда dotnet restore выполняется автоматически при выполнении dotnet build.Starting with .NET Core 2.0 SDK, dotnet restore runs implicitly when you run dotnet build. Чтобы отключить неявное восстановление при выполнении команды сборки, можно передать параметр --no-restore.If you want to disable implicit restore when running the build command, you can pass the --no-restore option.

Примечание

Начиная с .NET Core 2.0 нет необходимости выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet build и dotnet run.Starting with .NET Core 2.0, you don't have to run dotnet restore because it's run implicitly by all commands, such as dotnet build and dotnet run, that require a restore to occur. Эту команду по-прежнему можно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control the time at which the restore occurs.

Эта команда также поддерживает параметры dotnet restore при передаче в длинной форме (например, --source).This command also supports the dotnet restore options when passed in the long form (for example, --source). Параметры в краткой форме, например -s, не поддерживаются.Short form options, such as -s, are not supported.

То, является ли проект исполняемым, определяется свойством <OutputType> в файле проекта.Whether the project is executable or not is determined by the <OutputType> property in the project file. Следующий пример описывает проект, который создает исполняемый код:The following example shows a project that produces executable code:

<PropertyGroup>
  <OutputType>Exe</OutputType>
</PropertyGroup>

Чтобы создать библиотеку, опустите свойство <OutputType>.In order to produce a library, omit the <OutputType> property. Основное различие в выходных данных заключается в том, что библиотека DLL на промежуточном языке не содержит ни одной точки входа и ее нельзя выполнить.The main difference in built output is that the IL DLL for a library doesn't contain entry points and can't be executed.

MSBuildMSBuild

dotnet build использует MSBuild для сборки проекта, поддерживая при этом как параллельные, так и инкрементные сборки.dotnet build uses MSBuild to build the project, so it supports both parallel and incremental builds. Дополнительные сведения см. в разделе Инкрементные сборки.For more information, see Incremental Builds.

Помимо своих параметров, команда dotnet build принимает и параметры MSBuild, например -p для задания свойств или -l для определения средства ведения журнала.In addition to its options, the dotnet build command accepts MSBuild options, such as -p for setting properties or -l to define a logger. Дополнительные сведения об этих параметрах см. в справочнике по командной строке MSBuild.For more information about these options, see the MSBuild Command-Line Reference. Либо же вы можете использовать команду dotnet msbuild.Or you can also use the dotnet msbuild command.

Выполнение dotnet build эквивалентно dotnet msbuild -restore -target:Build.Running dotnet build is equivalent to dotnet msbuild -restore -target:Build.

АргументыArguments

PROJECT | SOLUTION

Файл проекта или решения для сборки.The project or solution file to build. Если файл проекта или решения не указан, MSBuild ищет в текущем рабочем каталоге файл с расширением, заканчивающимся на PROJ или SLN, и использует его.If a project or solution file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in either proj or sln and uses that file.

ПараметрыOptions

  • -c|--configuration {Debug|Release}

    Определяет конфигурацию сборки.Defines the build configuration. Значение по умолчанию — Debug.The default value is Debug.

  • -f|--framework <FRAMEWORK>

    Выполняет компиляцию для конкретной платформы.Compiles for a specific framework. Платформа должна быть определена в файле проекта.The framework must be defined in the project file.

  • --force

    Принудительное разрешение всех зависимостей, даже если последнее восстановление прошло успешно.Forces all dependencies to be resolved even if the last restore was successful. Указание этого флага дает тот же результат, что удаление файла project.assets.json.Specifying this flag is the same as deleting the project.assets.json file.

  • -h|--help

    Выводит краткую справку по команде.Prints out a short help for the command.

  • --no-dependencies

    Межпроектные (P2P) ссылки игнорируются, и выполняется сборка только указанного корневого проекта.Ignores project-to-project (P2P) references and only builds the specified root project.

  • --no-incremental

    Помечает сборку как небезопасную для добавочной сборки.Marks the build as unsafe for incremental build. Этот флаг отключает инкрементную компиляцию и запускает принудительную полную перестройку схемы зависимостей проекта.This flag turns off incremental compilation and forces a clean rebuild of the project's dependency graph.

  • --no-restore

    Во время сборки не выполняется неявное восстановление.Doesn't execute an implicit restore during build.

  • -o|--output <OUTPUT_DIRECTORY>

    Каталог, в который будут помещаться собранные двоичные файлы.Directory in which to place the built binaries. При указании этого параметра также необходимо определить --framework.You also need to define --framework when you specify this option. Если значение не указано, путь по умолчанию — ./bin/<configuration>/<framework>/.If not specified, the default path is ./bin/<configuration>/<framework>/.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Указывает целевую среду выполнения.Specifies the target runtime. Список идентификаторов сред выполнения (RID) см. в каталоге RID.For a list of Runtime Identifiers (RIDs), see the RID catalog.

  • -v|--verbosity <LEVEL>

    Задает уровень детализации команды.Sets the verbosity level of the command. Допустимые значения: q[uiet], m[inimal], n[ormal], d[etailed] и diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].

  • --version-suffix <VERSION_SUFFIX>

    Определяет суффикс версии для звездочки (*) в поле версия файла проекта.Defines the version suffix for an asterisk (*) in the version field of the project file. Формат соответствует рекомендациям в отношении версий NuGet.The format follows NuGet's version guidelines.

ПримерыExamples

  • Сборка проекта и его зависимостей:Build a project and its dependencies:

    dotnet build
    
  • Сборка проекта и его зависимостей с помощью конфигурации Release:Build a project and its dependencies using Release configuration:

    dotnet build --configuration Release
    
  • Сборка проекта и его зависимостей для определенной среды выполнения (в этом примере это Ubuntu 16.04):Build a project and its dependencies for a specific runtime (in this example, Ubuntu 16.04):

    dotnet build --runtime ubuntu.16.04-x64
    
  • Выполните сборку проекта и используйте указанный источник пакета NuGet во время операции восстановления (пакет SDK для .NET Core 2.0 и более поздних версий).Build the project and use the specified NuGet package source during the restore operation (.NET Core 2.0 SDK and later versions):

    dotnet build --source c:\packages\mypackages
    
  • Создайте проект и задайте версию 1.2.3.4 как параметр сборки:Build the project and set 1.2.3.4 version as a build parameter:

    dotnet build -p:Version=1.2.3.4