Почему tnet core cli будет генерировать файл "dll" помимо файла "exe"? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь использовать инструмент командной строки "do tnet", например, я могу запустить:

dotnet new console

Это создаст новый проект, а затем

dotnet build

Он будет генерировать bin / Debug / netcoreapp3.1 / XXX.exe и bin / Debug / netcoreapp3.1 / XXX.dll

Мне просто интересно, почему он будет генерировать файл DLL? Можно ли его использовать в других случаях?

Большое спасибо.

1 Ответ

1 голос
/ 24 января 2020

Когда вы используете команду

dotnet new console

, сгенерированный файл проекта выглядит так:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>

Строка

<OutputType>Exe</OutputType>

указывает, что будет сгенерирован .exe. Этот исполняемый файл просто запускает ваше приложение, которое хранится внутри dll (dll может быть запущена напрямую через do tnet full_generated_dll_path). Я предполагаю, что вывод .exe удобен в services / daemon scenar ios.

Проект обычно имеет некоторые зависимости (как управляемые, так и неуправляемые), поэтому выходные данные содержат много dll. Похоже, что нет смысла объединять exe и dll, потому что у вас еще есть много других dll (и логики приложения c, вероятно, также должны быть отделены от способа выполнения приложения).

От точки распространения одного файла, который содержит все необходимое для запуска приложения, кажется удобным, поэтому эту функцию добавили в в. Net Core 3

...