У меня есть настольное приложение, которое позволяет пользователю запускать один из десяти или около того отдельных модулей.Каждый модуль существует как независимая библиотека классов в решении.Управление версиями отдельных модулей важно для пользователя, поэтому я хочу иметь возможность перечислять версии каждой из библиотек классов в поле Справка-> О программе.Это довольно просто, и в настоящее время я делаю это, заполняя поле richText в AboutBox, используя приведенный ниже фрагмент.
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 для обфускации и слияния.
Спасибо.