내가 상자에 대한 나의 실버 라이트 3 응용 프로그램의 버전 번호를 표시 할 실버 라이트 어셈블리의 버전,하지만 난 같은 기존의 닷넷 호출을 사용하는 경우 :얻기 런타임
Assembly.GetExecutingAssembly().GetName().Version;
을 나는 GetName에에서는 MethodAccessException을 얻을() 호출. 내 어셈블리의 버전 번호를 얻으려면 어떻게해야합니까?
내가 상자에 대한 나의 실버 라이트 3 응용 프로그램의 버전 번호를 표시 할 실버 라이트 어셈블리의 버전,하지만 난 같은 기존의 닷넷 호출을 사용하는 경우 :얻기 런타임
Assembly.GetExecutingAssembly().GetName().Version;
을 나는 GetName에에서는 MethodAccessException을 얻을() 호출. 내 어셈블리의 버전 번호를 얻으려면 어떻게해야합니까?
private static Version ParseVersionNumber(Assembly assembly)
{
AssemblyName assemblyName = new AssemblyName(assembly.FullName);
return assemblyName.Version;
}
나이 : http://betaforums.silverlight.net/forums/p/128861/288595.aspx
그것에 대해 게시물 :
http://forums.silverlight.net/forums/p/93400/214554.aspx
당신은 내가 여기에 게시 된 JS 파일을 볼 수 있습니다 : Detect Silverlight version required by an assembly에서
Assembly assembly = Assembly.GetExecutingAssembly();
String version = assembly.FullName.Split(',')[1];
String fullversion = version.Split('=')[1];
귀하의 오류는 예상됩니다. 위의 사항은 중요하며, 일부 해결 방법이 있습니다.
GetName
은 보안 위험으로 표시되어 있으므로 호출하려고하면 예외가 발생합니다.
FullName
속성을 사용하고 문자열의 Version=x.x.x.x
부분을 구문 분석해야합니다.
그들은 정말 그들은 마이크로 소프트 사람들이 편집증이 있습니다 – herzmeister
@herzmeister der welten Silverlight 샌드 박스에서 단 하나의 작은 문제가 발생하여 명성에 심각한 손상을 입힐 것입니다. Silverlight의 삶에서이 단계에서 Microsoft는 그런 딸꾹질을 감당할 수 없습니다. 나는 실제로 위협이 아니라 많은 것들이 존재한다고 생각합니다. 그러나 그것들은 중요하지 않고 철저한 보안 분석과 테스트를하지 않았기 때문에 Security Critical 특성 만 있으면 안전합니다. – AnthonyWJones
당신은
Assembly.GetExecutingAssembly()
.GetCustomAttributes(false).OfType<AssemblyVersionAttribute>()
.Single().Version;
GetCustomAttributes (bool)는 "특별한"방식으로 처리되므로 AssemblyVersionAttribute를 반환하지 않습니다. AssemblyFileVersionAttribute를 계속 사용할 수 있으며 제대로 작동합니다. 그렇지 않으면, 문자열 구문 분석을 포함하지 않는 답변 주셔서 감사합니다 :) – noaRAVE
이 GetExecutingAssembly는 또한 어셈블리 유형, 호출 실패 대한 getName 반환 할 수 있습니다. – AnthonyWJones
당신이 그것을 통해, 나는 단지 그것을 테스트하고 잘 작동합니다. –
나는 첫번째 해결책을 좋아한다. 그것은 더 깨끗해 보인다. 그러나 둘 다 작동합니다. – Dov