合并到单个程序集时获取库版本

本文关键字:获取 版本 程序集 单个 合并 | 更新日期: 2023-09-27 18:26:31

我有一个桌面应用程序,它允许用户运行大约十个单独模块中的一个。每个模块都作为一个独立的类库存在于解决方案中。各个模块的版本控制对用户来说很重要,所以我希望能够在帮助->关于框中列出每个类库的版本。这非常简单,我目前在中使用下面的代码段在AboutBox中填充一个richText框。

this.moduleVersions.Text = "";
foreach (var kvp in mainform.moduleList)
    this.moduleVersions.Text += String.Format("{0,-20}: {1}'r'n", kvp.Key, kvp.Value.Assembly.GetName().Version.ToString());

注意,父主窗体中的模块列表是名称和类型的字典:

public Dictionary<string, Type> moduleList = new Dictionary<string, Type>();

但这里有皱纹。在一个发布版本中,我混淆并将所有dll合并为一个可执行文件。抛开这是否是最佳实践的问题不谈(我知道不是,但有令人信服的原因),问题是它打破了上面的片段,因为现在所有模块都在同一个程序集(父主窗体)中,并且它们都返回主程序集的版本。我想以某种方式传递原始程序集的版本号。这在没有暴力(即硬编码版本号)的情况下可能吗?

此外,我不认为这有什么关系,但我正在使用.NET Reactor进行混淆和合并。

谢谢。

合并到单个程序集时获取库版本

创建一个自定义属性并装饰类型。