Использование номера версии веб-приложения из сборки (ASP.NET/C#) - PullRequest
52 голосов
/ 16 апреля 2009

Как получить номер версии вызывающего веб-приложения в ссылочной сборке?

Я пытался использовать System.Reflection.Assembly.GetCallingAssembly (). GetName (), но он просто дает мне динамически скомпилированную сборку (возвращая номер версии 0.0.0.0).

ОБНОВЛЕНИЕ: в моем случае мне нужно было решение, которое не требовало бы ссылки на класс в сборке веб-приложения. Ответ Джейсона ниже (помеченный как принятый) удовлетворяет этому требованию - многие другие, представленные здесь, не отвечают.

Ответы [ 11 ]

1 голос
/ 10 июня 2009

Некоторая информация здесь: http://www.velocityreviews.com/forums/showpost.php?p=487050&postcount=8

в asp.net 2.0 каждая страница встроена в свою сборку, поэтому только dll AssemblyInfo.cs встроен в волю верните правильный ответ. просто добавьте статический метод для AssemblyInfo.cs, который возвращает информацию о версии и вызывает этот метод из других ваших страниц.

- Брюс (sqlwork.com)

Но я написал простой метод для этого:

    public static string GetSystemVersion(HttpServerUtility server)
    {
        System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
        doc.Load(server.MapPath("~/web.config"));
        System.Xml.XmlNamespaceManager ns = new System.Xml.XmlNamespaceManager(doc.NameTable);
        ns.AddNamespace("bla", "http://schemas.microsoft.com/.NetConfiguration/v2.0");

        System.Xml.XmlNode node = doc.SelectSingleNode("/bla:configuration/bla:system.web/bla:authentication/bla:forms[@name]", ns);

        string projectName = "";
        if (node != null && node.Attributes != null && node.Attributes.GetNamedItem("name") != null)
            projectName = node.Attributes.GetNamedItem("name").Value; //in my case, that value is identical to the project name (projetname.dll)
        else
            return "";

        Assembly assembly = Assembly.Load(projectName);
        return assembly.GetName().Version.ToString();
    }
...