Можно ли создавать детерминированные однофайловые сборки в dotnet/roslyn?

Я использую .Net 5 (c#).

Существует что при идентичных входных данных (т.е. исходном коде и некоторых других материалах среды) будут создаваться флаг roslyn Deterministic = true,побитовые идентичные сборки.

Когда я делаю обычную сборку и строю несколько раз, это работает должным образом.

Однако при этом создается выходной каталог со 121 файлом (все зависимости, например, файлы System.*. Dll). Я хотел бы иметь один exe-файл, что и делает флаг PublishSingleFile. Но когда я использую флаг PublishSingleFile, я больше не получаю детерминированный вывод.

Любая идея, есть ли способ заставить эту работу? Или комбинация этих 2 флагов не поддерживается?

1 ответ

В настоящее время не поддерживается. В настоящее время основное внимание уделяется созданию воспроизводимой ИЖ и валидации.

https://github.com/dotnet/designs/blob/main/accepted/2020/reproducible-builds.md

Создание управляемого двоичного файла включает в себя множество компонентов, включая ResX, XAML->BAML, строгое именование и MSBuild, которые можно настраивать бесчисленным множеством различных способов. Эти усилия сосредоточены только на исполняемом коде, игнорируя строгие имена, генерацию ресурсов, повторный запуск генераторов исходного кода и т. Д.

Другие вопросы по тегам