Подтвердить что ты не робот

Получение версии сборки Silverlight во время выполнения

Я хочу показать номер версии приложения Silverlight 3 в поле about, но когда я использую традиционный вызов .Net, например:

Assembly.GetExecutingAssembly().GetName().Version;

Я получаю MethodAccessException в вызове GetName(). Как я могу получить номер версии моей сборки?

4b9b3361

Ответ 1

private static Version ParseVersionNumber(Assembly assembly)
{
    AssemblyName assemblyName = new AssemblyName(assembly.FullName);
    return assemblyName.Version;
}

или это:

Assembly assembly = Assembly.GetExecutingAssembly(); 
String version = assembly.FullName.Split(',')[1];
String fullversion = version.Split('=')[1]; 

От: http://betaforums.silverlight.net/forums/p/128861/288595.aspx

сообщение об этом:

http://forums.silverlight.net/forums/p/93400/214554.aspx

Вы можете посмотреть файл js, который я разместил здесь: Определить версию Silverlight, необходимую для сборки

Ожидается, что ваша ошибка будет критически важной, а выше - некоторые работы.

Ответ 2

GetName отмечен как Security Critical и, следовательно, вы получаете исключение, когда пытаетесь его вызвать.

Вам нужно будет использовать свойство FullName и проанализировать часть Version=x.x.x.x строки.

Ответ 3

Вы можете использовать

Assembly.GetExecutingAssembly()
 .GetCustomAttributes(false).OfType<AssemblyVersionAttribute>()
 .Single().Version;