是否可以在 dotnet/roslyn 中构建确定性单文件程序集?

Is it possible to build Deterministic Single File assemblies in dotnet/roslyn?

我正在使用 .Net 5 (c#)。

有一个 roslyn flag Deterministic=true 给定相同的输入(即源代码和一些其他环境的东西)将产生逐位相同的程序集。

当我进行正常构建并多次构建时,这会按预期工作。

然而,这会生成一个包含 121 个文件(所有依赖项,例如 System.*.dll 文件)的输出目录。我想要一个单一的 exe 文件,这就是 PublishSingleFile 标志的作用。但是当我使用 PublishSingleFile 标志时,我不再获得确定性输出。

知道是否有办法使这项工作成功吗?或者不支持这两个标志的组合?

目前不支持。当前的重点主要是生成可重现的 IL 和验证。

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

Building a managed binary involves many components, including ResX, XAML->BAML, strong naming, and MSBuild, that can be customized in countless different ways. This effort focuses only on the executable code, ignoring strong naming, resource generation, re-running source generators, etc.