You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置<Deterministic>true</Deterministic>时Roslyn编译器文件编译顺序问询

文件传递顺序影响Roslyn编译行为,关于true的文件顺序疑问
  • 经测试,向Roslyn编译器传递源文件的顺序会改变程序运行行为,文件名本身不影响,但文件传递顺序确实会导致功能变化。
  • 默认项目中使用通配符(如**/*.cs)展开文件时,顺序不稳定;而项目配置中存在<Deterministic>true</Deterministic>选项,我需要明确:当启用该选项时,编译器接收文件的顺序是否固定?
  • 目前查阅相关文档未找到明确说明,如果该选项下文件顺序仍无固定规则,我将向Roslyn提交Bug——因为文件顺序导致功能变化完全违背了编译确定性的设计初衷。

最简复现示例

文件1:

partial class Class1 {
    public static int x = 3;
}

文件2:

partial class Class1 {
    public static int y = x;
}

Program.cs:

Console.WriteLine(Class1.y);

复现细节

该问题在FAT文件系统中最易触发,文件的创建顺序决定了通配符展开后传递给编译器的顺序,进而导致Class1.y的初始化结果不同(取决于x是否已完成初始化)。

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:45:58