Привет. Хочется, чтобы msbuild билдил исполняемые проекты только в exe, не создавая дополнительного dll файла.
Это не вопрос про self-contained публикацию приложения.
В csproj стоит тэг OutputType Exe, не дает нужного эффекта
~ via v16.14.0 via
❯ cd \workspace\vabka\
vabka\psf on master [?]
❯ dotnet new console
The template "Console App" was created successfully.
Processing post-creation actions...
Restoring C:\workspace\vabka\psf\psf.csproj:
Determining projects to restore...
Restored C:\workspace\vabka\psf\psf.csproj (in 91 ms).
vabka\psf on master [?] via .NET v7.0.100-rc.1.22431.12 net7.0 took 3s
❯ dotnet publish -c Release -r win-x64 -o ./pub -p:PublishSingleFile=true --self-contained false
MSBuild version 17.4.0-preview-22428-01+14c24b2d3 for .NET
Determining projects to restore...
Restored C:\workspace\vabka\psf\psf.csproj (in 37 ms).
C:\Program Files\dotnet\sdk\7.0.100-rc.1.22431.12\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferen
ce.targets(219,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-poli
cy [C:\workspace\vabka\psf\psf.csproj]
psf -> C:\workspace\vabka\psf\bin\Release\net7.0\win-x64\psf.dll
psf -> C:\workspace\vabka\psf\pub\
❯ cd pub
vabka\psf\pub on master [?]
❯ dir
Volume in drive C has no label.
Volume Serial Number is CCCA-34AE
Directory of C:\workspace\vabka\psf\pub
25.10.2022 15:52 <DIR> .
25.10.2022 15:52 <DIR> ..
25.10.2022 15:52 160 670 psf.exe
25.10.2022 15:52 10 840 psf.pdb
2 File(s) 171 510 bytes
2 Dir(s) 4 097 945 600 bytes free
verykruta, а зачем тебе склеивать файлы на этапе сборки?
dotnet build предназначен только:
1. Для проверки на наличие ошибок компиляции
2. Как промежуточный этап в рамках publish
3. Для отладки
Ни в каком сценарии, по идее, не должно быть проблем от того, что у тебя несколько файлов, а раз так, то проблема выдумана и не требует решения.
Ну или я что-то упускаю (хотелось бы получить ваш ответ)
Потому что .Net бывает только в виде .dll. в комплекте .exe это нативный лончер заменяющий запуск вручную dotnet <ваша .dll>.
С публикацией одним файлом ситуация та же - внутри все равно хранится .dll.