2010-12-03 4 views
1
  1. 출력이 강력한 어셈블리라는 테스트 프로젝트를 만들었습니다. 'project -> properties -> Signing'섹션에서 SNK 파일 이름을 지정 했으므로 어셈블리의 이름이 강력하게 지정됩니다. 서명되지 않았거나 강력한 이름의 어셈블리 참조를 추가했습니다. 서명되지 않은 어셈블리를 참조하기 때문에 프로젝트가 전혀 빌드되지 않을 것으로 예상하고있었습니다. 그러나, 그것은 건설하고 나는 GAC에있는 집합을 너무 설치할 수 있었다! 왜 그래야만하지? (나는 .NEt 4.0을 사용하고 있으며 gacutil.exe가 있습니다.) 참고 : 참조되는 어셈블리가 강력한 이름이 아닌지 확인했습니다.반사 및 강력한 명명 된 어셈블리

  2. 강력한 이름의 어셈블리가 될 내 프로그램에서 '서명되지 않은'(즉, 강하지 않은 이름의) 어셈블리를 프로그램 적으로로드 할 수 있습니까? 그렇다면 .NET이 서명되지 않은 어셈블리에 대한 참조를 추가하도록 허용하지 않는 이유는 무엇입니까?

  3. GAC에 동일한 어셈블리의 여러 버전이있는 경우. 구성 파일에 어셈블리 이름 만 지정하면 GAC에서 어떤 버전이로드됩니까? 매번 최신 버전이됩니까? 어떤 API가 유용할까요? Assembly 클래스에 'deprecated'라고 표시된 많은 메소드가 있습니다.

답변

0
  1. 서명 된 어셈블리를 서명되지 않은 어셈블리를 참조 아무런 문제가 없습니다. 그것은 수행되고 서명 된 어셈블리는 GAC 될 수 있습니다.

  2. 예,로드 할 수 있습니다.

  3. 어셈블리를 이름으로 어떻게 지정할 수 있습니까? 하나의 API LoadWithPartialName 만 있고 여러 가지 이유로 더 이상 사용되지 않습니다. 어셈블리를 고유하게 식별하려면 버전, 문화 및 공개 키 토큰이 필요합니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx 링크를 따르면 MSDN에서도 "강력한 이름의 어셈블리는 다른 강력한 어셈블리 만 참조 할 수 있습니다."라고 말합니다. 그래서 나는 여전히 1 점에 대해 혼란 스럽습니다. 2 번 질문에 대한 대답이 '예'라면, 제 질문에 대답 해 주시겠습니까? 왜 제가 지정한 링크의 기사를 고려해 볼 수 있습니까? 다시 한번 감사합니다. – Learner

1

VS.Net에서 서명되지 않은 어셈블리를 서명 된 어셈블리에서 참조 할 수 있습니다. 그러나 서명 된 것에서 서명되지 않은 것을 호출하면 빌드가 실패합니다.