我可以在构建.net程序集时指定模块版本ID(MVID)吗?我们有一些每晚自动构建的共享程序集。如果不对源代码进行任何更改,我希望汇编二进制文件与以前完全相同。但是,组件之间似乎存在细微差别。我做了一些尝试来确定这两个版本之间的区别。我使用ildasm生成il版本并比较生成的文本版本。唯一的区别(在IL中)是模块中的MVID(随机guid)。一些谷歌搜索告诉我,模块版本ID是由编译器生成的,因此即使其他一切都相同,也可以确定构建源。此MVID在相同代码的构建之间创建人为差异,并手动检查生成的程序集。是否可以将MVID提供给C#编译器?ECMA-335标准说:MVID是用于区分同一模块的两个版本的Guid根据此描述,将其作为参数提供给C#编译器会破坏其目的,因为您可以为不同的构建传递相同的MVID所以我会说不。我认为更简单的方法是只在每晚没有必要改变的时候构建。我意识到这是一个已有5年历史的问题,但我制作了一个Fody插件,允许您为程序集指定自定义MVID(我自己的测试需要)您可以通过nuget获取它:Install-PackageMvid。Fody然后您可以像这样指定自定义MVID:[assembly:Mvid("your-guid-string-here")]当程序集编译时,它将具有您指定的Guid的MVID。更多信息:https://github.com/hmemcpy/Mvid.Fody以上就是C#学习教程:CanIspecifyaModuleVersionID(MVID)whenbuildinga.netassembly?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
