Управление версиями ASP.NET веб-приложения

StackOverflow https://stackoverflow.com/questions/1446153

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top