2008-12-29 49 views

回答

5

你为什么要这样做?如果这样可以让其他应用程序使用它,则可以考虑使用assembly binding redirection

+4

对于部署,我们更新了集信息文件,并做了充分的重建,但越来越太重,所以我们正在以增量构建。问题是确定哪个AssemblyInfo要更新,所以现在我们不更新增量上的版本。 – Mike 2008-12-29 17:54:40

+0

所以,我正在看的当前可能的解决方案是更新大会文件版本后构建,以便每个人都知道您正在查看的代码的哪个版本。 – Mike 2008-12-29 17:56:13

+0

您想为* deployment *使用增量构建吗?让人惊讶。您的构建需要多长时间?您部署的频率如何?我个人不会对此感到满意 - 我想要一个干净的,完整的构建(和测试运行)进行部署。更容易重现这种方式。 – 2008-12-29 17:58:57

1

听起来你的过程很重,因为你必须更新多个AssemblyInfo文件。你有没有考虑在项目之间共享相同的AssemblyInfo文件? Derik Whittaker举例说明了如何做到这一点。

一旦你有一个单一的文件,你可以通过使用MSBuildNAnt更新你的单一AssemblyInfo版本来增加额外的距离。

35

您可以使用ILMerge

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

的正当理由这样做是为了增加程序集的版本在构建在你发现的重大更改(使用NDepend的举例)。这样,如果没有重大更改,程序集版本保持不变,并且可以轻松修补已发布的版本。

我们总是增加文件版本,并反映内部版本号。

1

如果你有正式的测试和源代码管理,这个过程变得相当简单。它首先了解谁可以更改版本的不同数字段以及何时更改。 .net程序集有4个数字段(即1.0.0.1)。

第一个段包含主要版本号。这由高层管理人员设置,并指示用户界面或应用程序平台中的重大变化。这应该始终是程序集版本和文件版本之间的相同数字。

第二个区段包含副版本号,也称为功能版本号。这由项目管理设置,并表示新功能已添加到应用程序。这应该始终是程序集版本和文件版本之间的相同数字。

第三段包含内部版本号。这由测试组设置,并表示应用程序已准备好部署。在发布错误修复之前它会发生更改。在发布新版本时,测试会将第四个段重置为0.这可以是程序集版本和文件版本之间的相同数字,但对于程序集版本通常为0,以简化修补现有部署。

第四段包含版本号。这是由开发组在源代码控制中检查新代码时设置的。此编号将包含在编译的DLL的文件版本中,但不包含在程序集版本中。

我发现这有助于部署人员,测试人员和开发人员跟踪最新版本,而不必踩在彼此的脚趾上。 Unfortunatley,我也和那些使用静态版本控制系统的公司合作过,所以没有人真正知道最新的,最好的程序集。

5

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

  1. 拆卸

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

  2. 编辑my.il改变的版本信息。 有几个地方寻找到:

    • 主要:次要:版本:编译 - 通常是一个发生
    • 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

  • 相关问题