当前位置:  开发笔记 > 编程语言 > 正文

在已编译的.NET程序集中更改程序集版本

如何解决《在已编译的.NET程序集中更改程序集版本》经验,为你挑选了4个好方法。

简单的问题......有没有办法改变已编译的.NET程序集的汇编版本?

我实际上可以改变程序集文件版本.



1> MarkGr..:

您可以使用ILMerge:

ILMerge.exe Foo.dll /ver:1.2.3.4 /out:Foo2.dll

执行此操作的正当理由是在构建中增加程序集版本,以查找重大更改(例如,使用NDepend).这样,如果没有重大更改,程序集版本保持不变,您可以轻松修补已发布的版本.

我们总是递增文件版本,这反映了内部版本号.



2> 小智..:

老话题,但这里是我的5角钱......

    拆卸

    ildasm my.exe /output:my.il/ metadata

    编辑my.il以更改版本信息.有几个地方需要研究:

    major:minor:revision:build - 通常是一次出现

    major.minor.revision.build - 几次出现.该字符串位于实际行之后的注释部分中.版本是字节数组中的十六进制值.例:

.custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 35 2E 31 2E 33 2E 30 00 00 ) // ...5.1.3.0..

    编辑my.res以更改版本信息.双击并使用visual studio进行编辑.非常直接的程序.

    集合

    ilasm my.il /res:my.res


我只需要在第4步添加一个/ dll开关.ilasm my.il /res:my.res/dll

3> Jon Skeet..:

你为什么要这样做?如果它是另一个应用程序可以使用它,您可能希望查看程序集绑定重定向.


对于部署,我们更新AssemblyInfo文件并执行完全重建,但这太重了,所以我们要转向增量构建.问题是确定要更新哪个AssemblyInfo,所以我们现在不更新增量版本的版本.

4> 小智..:

听起来您的过程很繁琐,因为您必须更新多个AssemblyInfo文件。您是否考虑过在项目之间共享相同的AssemblyInfo文件? Derik Whittaker给出了一个很好的例子。

拥有单个文件后,您可以通过构建过程使用MSBuild或NAnt更新单个AssemblyInfo版本,从而加倍努力。

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有