Получение рабочей версии сборки Silverlight - PullRequest
26 голосов
/ 19 февраля 2010

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

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

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

Ответы [ 3 ]

48 голосов
/ 19 февраля 2010
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, необходимую для сборки

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

6 голосов
/ 19 февраля 2010

GetName помечен как критический для безопасности, и, следовательно, вы получаете исключение при попытке вызвать его.

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

1 голос
/ 24 апреля 2012

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

Assembly.GetExecutingAssembly()
 .GetCustomAttributes(false).OfType<AssemblyVersionAttribute>()
 .Single().Version;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...