Будет ли новая версия (AssemblyFileVersionAttribute.Version) всегда успешной?

Будет new Version(AssemblyFileVersionAttribute.Version) всегда получается?

Это мой код

Contract.Ensures(Contract.Result<Version>() != null);
var ass = Assembly.GetExecutingAssembly();
var attributes = ass.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).Cast<AssemblyFileVersionAttribute>();
var versionAttribute = attributes.Single();
return new Version(versionAttribute.Version)

2 ответа

Решение

Нет:

[assembly:AssemblyFileVersion("fred")]
static class program
{
    static void Main()
    {
        var ass = Assembly.GetExecutingAssembly();
        var attributes = ass.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).Cast<AssemblyFileVersionAttribute>();
        var versionAttribute = attributes.Single();
        var ver = new Version(versionAttribute.Version);        
    }
}

Обратите внимание, что это генерирует предупреждение:

Предупреждение 1 Генерация сборки - версия "Fred", указанная для "версии файла", не в обычном формате "major.minor.build.revision"

Но предупреждение не останавливает это.

Да, если атрибут AssemblyFileVersionAttribute определен в AssemblyInfo.cs. Приведенный выше код вызовет исключение, если [assembly: AssemblyFileVersion("1.0.0.0")] комментируется в AssemblyInfo.cs.

Другие вопросы по тегам