为什么我的 DLL 文件在 git 中被标记为已修改?

Why my DLL files inside are being marked as modified in git?

我需要在 git 中包含一些 DLL 文件。我知道这不是一个好习惯。但是这个解决方案暂时解决了我们的一个问题。

但问题是,虽然我根本没有改变任何东西,没有修改任何一行代码,甚至没有修改一个字符,但当我使用 dotnet build 时,我看到 git 将输出标记为 modified.

我尝试使用 Beyond Compare 的 Hex 比较来比较它们,这是开始字节的图像:

我不知道为什么要修改它。我的意思是,我希望 dotnet build 是确定性的,并为相同的输入提供相同的结果。但显然有些事情发生了变化。

有谁知道为什么 dotnet build 有这种行为?

我正在使用 .NET 6。

让我总结一下评论,以便这里有一个答案(OP 可能应该这样做):Git 说文件已修改,因为它实际上已修改。 有一个构建时间戳(在这种情况下它只是一个时间戳;其他系统中的其他情况可能包括额外的项目)使得构建不是 reproducible or deterministic.

这是一个很常见的问题。有些系统有一个旋钮,你可以设置它来获得确定性的构建,而这个特定的系统就是这样做的。打开它解决了问题。参见 the link provided in