Есть ли способ ограничить. NET Основные проекты для создания только .dll в качестве выходных файлов при использовании. NET Core 3.1 sdk - PullRequest
2 голосов
/ 05 мая 2020

Когда я создаю свое консольное приложение. NET Core с использованием. NET Core 3.1 sdk, на выходе создается как .exe, так и .dll. Когда я использовал. NET Core 2.1, он генерировал только .dll в качестве вывода. Есть ли способ ограничить. NET Core 3.1 sdk для генерации только .dll в качестве вывода?

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

Вы можете контролировать это с помощью параметра UseAppHost MSBuild:

Свойство UseAppHost было введено в версии 2.1.400 ядра. NET Core SDK. Он определяет, создается или нет собственный исполняемый файл для развертывания. Для автономных развертываний требуется собственный исполняемый файл.

В. NET Core 3.0 и более поздних версиях по умолчанию создается зависимый от платформы исполняемый файл. Задайте для свойства UseAppHost значение false, чтобы отключить создание исполняемого файла.

<PropertyGroup>
    <UseAppHost>false</UseAppHost>
</PropertyGroup>

Если вы хотите отключить это при сборке из командной строки, вместо установки в .csproj , передайте свойство в качестве аргумента. Например:

dotnet build /p:UseAppHost=false
0 голосов
/ 05 мая 2020

В. NET разница между .exe и .dll на самом деле очень мала. .exe обычно немного больше, чем .dll с некоторым кодом bootstrap и начальной точкой (класс, чей основной метод должен быть вызван).

Вы можете использовать и. NET .exe и. dll как ссылки на проект. Может быть какая-то разница в некоторых деталях, таких как COM-взаимодействие, но я этого не ожидаю.

Что именно компилятор построит, зависит от его входных данных. Что включает в себя настройки проекта. Есть особый тип проекта для библиотеки. А при изменении версии может нарушиться правильное чтение файлов проекта. И, конечно же, есть возможность «выделить» некоторый код в .dll. Большинство программ в настоящее время - это больше .dll, чем исполняемые файлы. И может быть полезно, чтобы .exe был маленьким.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...