更改已编译.NET程序集中的程序集版本
简单的问题。。。是否有方法更改已编译.NET程序集的程序集版本更改已编译.NET程序集中的程序集版本,.net,.net,简单的问题。。。是否有方法更改已编译.NET程序集的程序集版本 事实上,我可以用一种方法更改程序集文件的版本。为什么要这样做?如果是为了让另一个应用程序可以使用它,那么您可能需要研究它。听起来您的过程很繁重,因为您必须更新多个AssemblyInfo文件。您是否考虑过在项目之间共享相同的AssemblyInfo文件? 给出了一个很好的例子来说明如何做到这一点 一旦你有了一个文件,你就可以通过一个构建过程使用或更新你的单一AssemblyInfo版本来完成额外的工作。你可以使用: ILMerge.
事实上,我可以用一种方法更改程序集文件的版本。为什么要这样做?如果是为了让另一个应用程序可以使用它,那么您可能需要研究它。听起来您的过程很繁重,因为您必须更新多个AssemblyInfo文件。您是否考虑过在项目之间共享相同的AssemblyInfo文件? 给出了一个很好的例子来说明如何做到这一点 一旦你有了一个文件,你就可以通过一个构建过程使用或更新你的单一AssemblyInfo版本来完成额外的工作。你可以使用: ILMerge.exe Foo.dll/ver:1.2.3.4/out:Foo2.dll 这样做的一个有效原因是,在您发现的破坏性更改(例如使用NDepend)中,在构建中增加程序集版本。这样,如果没有破坏性的更改,程序集版本将保持不变,并且您可以轻松地修补发布的版本
我们总是增加文件版本,这反映了版本号 如果您有正式的测试和源代码控制,那么这个过程将变得相当简单。首先要了解谁可以更改版本的不同数字段,以及何时更改。网络组件有4个数字段(即1.0.0.1) 第一段包含主要版本号。这是由高层管理人员设置的,表示应用程序的UI或平台发生了重大变化。程序集版本和文件版本之间的编号应始终相同 第二段包含次要版本号,也称为功能发布号。这是由项目管理设置的,表示应用程序中已添加了新功能。程序集版本和文件版本之间的编号应始终相同 第三段包含内部版本号。这是由测试组设置的,表示应用程序已准备好部署。它在发布错误修复之前被更改。发布新版本时,测试会将第四段重置为0。程序集版本和文件版本之间的数字可以相同,但程序集版本通常保留为0,以简化对现有部署的修补 第四部分包含修订号。每当开发小组将新代码签入源代码管理时,他们都会设置这个参数。此编号将包含在已编译DLL的文件版本中,但不包含在程序集版本中
我发现,这有助于部署人员、测试人员和开发人员跟踪最新版本,而无需互相干涉。不幸的是,我也曾与使用静态版本控制系统的公司合作过,因此没有人真正知道最新、最好的程序集是什么。,如本文所述,它简单而有效。旧主题,但这里是我的5维
- 主要:次要:修订:构建-通常一次出现
- major.minor.revision.build-多次出现。该字符串位于实际行之后的注释部分。版本是字节数组中的十六进制值。例如:
.custom instance void[mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(字符串)=(01 00 07352E312E332E3000)/5.1.3.0..
奇怪的人错过了。它是专门为破解文件资源而设计的。因此,它还将帮助您编辑部件信息,包括文件版本
使用系统;
使用System.Windows.Forms;
使用系统诊断;
公共级rh
{
公共静态void Main()
{
程序集更改器(“file_path.exe”);
}
私有静态字符串rc()
{
字符串FileVersion=“6,8,0,1”;
返回“1版本信息”
+“\n文件版本”+文件版本
+“\n产品版本0,0,0,0”
+“\n文件操作系统0x4”
+“\n文件类型0x1”
+“\n{BLOCK\'StringFileInfo\'{BLOCK\'000004b0\'{}}BLOCK\'VarFileInfo\'{VALUE\'Translation\',0x0000 0x04B0}}”;
}
公共静态无效程序集\u转换器(字符串exe)
{
System.IO.File.writealText(“details.rc”,rc());
进程(“reshacker.exe”,“-open details.rc-save resources.res-action compile-log num”);
进程(“reshacker.exe”,“-open\”“+exe+”\”-resource resources.res-save\”“+exe+”\-action addoverwrite-mask\“Version info\”);
}
公共静态bool进程(字符串文件名、字符串参数)
{
使用(流程=新流程())
{
process.StartInfo.FileName=文件名;
process.StartInfo.Arguments=args;
process.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
}
返回true;
}
}
对于部署,我们更新AssemblyInfo文件并进行完整重建,但这太繁重了,因此我们将转向增量构建。问题是确定要更新的AssemblyInfo,所以现在我们不更新增量版本。不,部署仍然是完全干净的构建。请给我一些信用!增量只是用于连续的内部构建。问题是人们不知道他们正在查看/测试哪个版本,除非它是一个完全干净的版本,并且有更新的AssemblyInfo。如果它只是为了内部目的,你可以
ILMerge.exe Foo.dll /ver:1.2.3.4 /out:Foo2.dll