2011-10-28 8 views
6

Chcę wyświetlić numer wersji aplikacji w mojej aplikacji, a najprostszym sposobem jest użycie numeru wersji dla zespołu.Nie można wywołać Assembly.GetName() z mojej aplikacji Silverlight

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

mogę wykonujący montaż bez problemu, ale wezwanie do GetName() zwraca MethodAccessException z tym komunikatem

próba zabezpieczenia przejrzysty sposób "MainPage..ctor(), aby uzyskać dostęp bezpieczeństwa krytycznej metoda "System.Reflection.Assembly.GetName()" nie powiodła się.

Dlaczego tak się dzieje, czy jest coś, co mogę z tym zrobić, a jeśli nie, to istnieje inny sposób na odzyskanie wersji złożonej?

Odpowiedz

6

Nazwa Assembly.GetName jest oznaczona atrybutu SecurityCriticalAttribute, spróbuj użyć GetCallingAssembly().FullName i usuń z niej informacje o wersji.

Nie używaj tego członka w swojej aplikacji. Jeśli to zrobisz, Twój kod będzie rzucić wyjątek MethodAccessException. Ten element ma krytyczne znaczenie dla bezpieczeństwa, który ogranicza go do wewnętrznego użytku w bibliotece klas Silverlight .NET Framework. [Zabezpieczeń o wysokim priorytecie]

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

8

mam to od Stackoverflow (Getting runtime version of a Silverlight assembly) ... u mnie działa:

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; 
    } 
Powiązane problemy