以编程方式更改的AssemblyVersion和属性的AssemblyFileVersion(Pro

2019-07-22 00:41发布

在一个安装创作过程,我打算做到以下几点(一内C#脚本 ):

  1. 阅读AssemblyVersionAssemblyFileVersion属性一个DLL的值。
  2. 迭代项目中的所有DLL文件和可执行文件,并将这些版本到他们AssemblyVersionAssemblyFileVersion属性值。

现在的问题是: 如何做第2步?

我成功地可以做的第一步,但对于第2步我没有看到一个真正的起点。 我可能要做的是使用一些天然的P / Invoke方法,因为属性直接修改DLL /可执行文件的版本信息资源的信息。

在这个任何提示?

Answer 1:

你为什么不,在构建过程中,阅读AssemblyVersionAssemblyFileVersion一个DLL,并保存回其他csproject的AssemblyInfo.cs ,只有编译它?

作为事实上,我不知道是否有可能直接修改DLL文件,而不是诉诸什么稀奇的。

或替代,确保所有您的dll一个共同AssemblyInfo.cs 。 您可以通过添加为此AssemblyInfo.cs的“添加链接”,当你在csproject添加新项。 这样,当你做一个编辑,所有的DLL将共享相同AssemblyInfo.cs ,从而输出相同AssemblyVersion



Answer 2:

就我而言,我创建了一个T4模板改变的AssemblyVersion和的AssemblyFileVersion。 我所谓的模板Assembly.tt,并使它成为链接文件(当您添加,而不是添加它选择添加链接)。 我所有的组件拉链接Assembly.tt文件。

然后,您可以从一个位置运行T4模板,它会更新所有的AssemblyVersion和AssemblyFileVersions。 你不必调用该文件的AssemblyInfo.cs的信息被提取到您的DLL。

对于Assembly.tt文件的代码:

<#@ template language="C#" hostspecific="true" #>
// 
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
// 

using System.Reflection;

[assembly: AssemblyVersion("4.<#= this.RevisionYear #>.<#= this.RevisionNumber #>.<#= this.RevisionTime #>")]
[assembly: AssemblyFileVersion("4.<#= this.RevisionYear #>.<#= this.RevisionNumber #>.<#= this.RevisionTime #>")]
<#+
    int RevisionYear = DateTime.UtcNow.Year;
    int RevisionNumber = (int)(DateTime.UtcNow - new DateTime(DateTime.UtcNow.Year,1,1)).TotalDays;
    int RevisionTime = (int)(DateTime.UtcNow - new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day)).TotalMinutes;
#>

所述T4模板的输出将是:

// 
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
// 

using System.Reflection;

[assembly: AssemblyVersion("4.2016.284.1066")]
[assembly: AssemblyFileVersion("4.2016.284.1066")]


Answer 3:

如果你有机会获得资源,采取从引力意见

如果不这样做,你可能会遇到麻烦。 也许你可以用ILDASM拆卸与重新组装ILASM。 但是,这不会为强名称程序集锻炼身体。



文章来源: Programmatically change the AssemblyVersion and AssemblyFileVersion attributes