Управление версиями ASP.NET веб-приложения
-
22-07-2019 - |
Вопрос
Я даже не уверен, подходит ли для этого слово "Управление версиями", но это должно сработать.Я хочу начать размещать примечание "Версия x.x.xx" в наших внутренних приложениях по запросу наших пользователей, чтобы у них было приблизительное представление о том, когда оно будет обновлено (и в будущем сделайте это ссылкой, которая показывает изменения).Похоже, что использование файла AssemblyInfo.cs - хорошая идея - это позволяет вам автоматически обновлять сборку + ревизию, что приятно (для .DLL веб-приложения).
Достойный ли это подход?Затем всякий раз, когда я достигаю основных / второстепенных этапов разработки моего приложения.Я могу просто обновить их вручную, верно?Все это предполагает, что я действительно могу получить информацию о версии из своего приложения.каким-то образом, чего я тоже понятия не имею, как сделать.
Решение
Мы делаем то же самое в нашем приложении. Несмотря на то, что вы можете добавить номер версии вручную, наша информация о версии добавляется в сборку как часть нашего автоматизированного процесса сборки (мы используем настраиваемую службу TFS 2008), которую я настоятельно рекомендую. Вот элемент управления, который мы используем (мы просто поместили его внизу главной страницы):
public class BuildVersion : WebControl
{
/// <summary>
/// Render override
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<!--");
writer.Write("Version: ");
writer.Write(GetAssemblyVersion());
writer.Write("-->");
}
private string GetAssemblyVersion()
{
try
{
Object[] atts = Assembly.GetAssembly(this.GetType()).GetCustomAttributes(true);
foreach (Object o in atts)
{
if (o.GetType() == typeof(AssemblyVersionAttribute))
{
return ((AssemblyVersionAttribute)o).Version;
}
}
return String.Empty;
}
catch
{
return "Failed to load assembly";
}
}
}
Другие советы
Вы можете использовать номера версий так, как вы описываете, просто изменяя номера в файле AssemblyInfo при создании новых выпусков, но это лучше, когда они связаны с системой контроля версий. Мы используем проекты CrusieControl.NET и Web Deployment для установки номера версии, но я уверен, что у других будут другие предложения.
Также вы можете получить номер версии скомпилированного сайта, используя этот код:
System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString
Если вы работаете в режиме отладки до компиляции, он покажет 0.0.0.0, но вы можете проверить это и отобразить " Разработка " или что-то подобное, чтобы показать себе, что он работает локально (не то, чтобы вы не знали, но если вы когда-нибудь увидите 0.0.0.0, вы поймете, что что-то не так.
Надеюсь, это поможет
Это неплохая идея.Решение получить вашу версию библиотеки DLL для веб-приложения ASP.NET простое:
VB.NET
My.Application.Info.Version (VB.NET)
C#
Получите доступ к пространству имен My, как показано здесь http://www.codeproject.com/KB/cs/MyNamespace.aspx
Намного проще, чем использовать тонны кода.
Мы автоматизируем управление версиями с помощью subversion, ccnet и nant.
Наш скрипт анализирует путь к папке (/Branches/1.4.5/Source ...) и извлекает номер версии (1.4.5). После этого мы извлекаем номер текущей ревизии из Subversion и помещаем его в последнюю позицию версии (т.е. 1.4.5.346). Получив полный номер версии, мы внедряем его во все сборки и записываем его в файлы version.txt, чтобы было легко определить, какая версия в данный момент развернута на веб-серверах.
Учитывая сборку a, используйте .GetName (). Version.ToString (), чтобы получить версию в коде.
GetName возвращает AssemblyName . р>
Версия возвращает версию, указанную в вашем файле AssemblyInfo. Р>