git - Git 提交哈希影响新格式 csproj 的 Visual Studio dll/exe 二进制文件
问题描述
我有许多 NET 框架项目。旧项目具有 Deterministic=true 的旧 csproj 格式。因此,每当我构建程序集时,我都会收到相同的输出文件(dll 或 exe)的二进制文件。新项目具有新的 csproj 格式。在新格式中,没有确定性选项。最奇怪的是当前 checkout git hash 会影响输出二进制文件。所以我只为相同的 git commit 收到相同的二进制文件。但是如果我改变一些不影响项目的东西并构建它,我会得到不同的二进制文件。
最简单的重现方法:
- 构建项目
- 通过 git 将 git commit 消息更改为任何其他(甚至相同)
commit --ammend -m "Some message"
- 构建项目
- 比较二进制文件(它们不同)
如果项目相同,我希望我的二进制文件相同,无论它是从哪个 git 提交构建的(与旧的 csproj 格式相同)。我怎样才能做到这一点?
解决方案
事实证明,其中一个引用的项目(我们称之为“SomeProject”)使用了 Nerdbank.GitVersioning 来生成文件版本。这就是为什么所有依赖于“SomeProject”二进制文件的项目在构建时都会发生变化的原因。
推荐阅读
- sql-server - 一对外键引用一个带有一对 PrimaryKey 的表
- validation - 跨不同项目构建验证
- python - MySQLdb._exceptions.OperationalError: (1698, "Access denied for user 'root'@'localhost'")
- c++ - 交叉编译 wxGtk
- linkedin - Linkedin ugc 帖子未正确发布
- java - Android Studio - 插页式广告加载问题
- html - 如何为具有不同标题的 div 设置相同的高度并响应每个移动屏幕
- java - 即使条件不成立,登录活动也会进入下一个活动
- javascript - 文本替换删除标签
- c# - Unity 中的 GraphQL 查询