Member 8530676 Ответов: 1

Как получить атрибут версии ?


пожалуйста, дайте мне знать, почему NullReferenceException возникает при получении версии
        private static void showBanner()
        {
            string text =
@"
_title_ : _description_ Ver._version_

_copyright_
This ""_title_"" is distributed under terms of the ISC License.
( http://www.isc.org/downloads/software-support-policy/isc-license/ )
";
            string title = getAttribute<AssemblyTitleAttribute>().Title;
            string description = getAttribute<AssemblyDescriptionAttribute>().Description;
            string version = getAttribute<AssemblyVersionAttribute>().Version;
            string copyright = getAttribute<AssemblyCopyrightAttribute>().Copyright;
            text = text.Replace("_title_", title)
                       .Replace("_description_", description)
                       .Replace("_version_", version)
                       .Replace("_copyright_", copyright);
            Console.Error.WriteLine(text);
        }

        private static Tattribute getAttribute<Tattribute>() where Tattribute : Attribute
        {
            Assembly assembly = Assembly.GetExecutingAssembly();
            return (Tattribute)Attribute.GetCustomAttribute(assembly, typeof(Tattribute));
        }


Что я уже пробовал:

оба результата были одинаковыми
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]

этот код тоже такой же, так что я думаю, что это не кажется проблемой шаблона.
string version = ((AssemblyVersionAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyVersionAttribute))).Version;

Я могу получить версию по этому коду.
string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();

NotPolitcallyCorrect

http://stackoverflow.com/questions/1144525/getcustomattribute-returns-null-for-assemblyversionattribute

Member 8530676

Спасибо за хороший совет.
Я буду использовать " сборку.GetExecutingAssembly ().GetName (). Version"

1 Ответов

Рейтинг:
5

Member 8530676

string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();


https://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.aspx:
> Чтобы получить имя загруженной сборки, вызовите GetName в сборке, чтобы получить имя сборки, а затем получить свойство Version.