我有一个桌面应用程序,使用户可以运行十个左右的单个模块中的一个。每个模块都作为解决方案中的独立类库存在。各个模块的版本控制对用户很重要,因此我希望能够在Help-> About框中列出每个类库的版本。这非常简单,我目前通过使用下面的代码片段在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进行混淆和合并。
感谢。
答案 0 :(得分:0)
创建自定义属性并装饰类型。