Невозможно вызвать Assembly.GetName () из моего приложения Silverlight - PullRequest
6 голосов
/ 28 октября 2011

Я хочу отобразить номер версии своего приложения в моем приложении, и самый простой способ сделать это - использовать номер версии для сборки.

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var name = assembly.GetName();
return String.Format("Version {0}.{1}", name.Version.Major, name.Version.Minor);

Я могу получить выполняющуюся сборку без проблем,но вызов GetName() возвращает MethodAccessException с этим сообщением

Попытка прозрачного метода безопасности 'MainPage..ctor ()' для доступа к критическому методу безопасности 'System.Reflection.Assembly.GetName() 'не удалось.

Почему это происходит, могу ли я что-то с этим сделать, и если нет, то есть ли другое средство получения версии сборки?

Ответы [ 2 ]

8 голосов
/ 29 октября 2011

Я получил это от Stackoverflow ( Получение рабочей версии сборки Silverlight ) ... у меня работает:

    public static string GetVersion()
    {
        string versionNumber = ParseVersionNumber(Assembly.GetExecutingAssembly()).ToString();
        return versionNumber;
    }

    private static Version ParseVersionNumber(Assembly assembly)
    {
        AssemblyName assemblyName = new AssemblyName(assembly.FullName);
        return assemblyName.Version;
    }
6 голосов
/ 28 октября 2011

Assembly.GetName помечен атрибутом SecurityCriticalAttribute, попробуйте использовать GetCallingAssembly().FullName и извлеките из него информацию о версии.

Не используйте этот элемент в своем приложении.Если вы это сделаете, ваш код вызовет исключение MethodAccessException.Этот член критичен к безопасности, что ограничивает его внутреннее использование библиотекой классов .NET Framework for Silverlight.[КРИТИЧЕСКИЙ БЕЗОПАСНОСТЬ]

от: http://msdn.microsoft.com/en-us/library/9w2wdeze(VS.95).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...