2010-01-14 2 views
4

이것은 실제로는 쉽지만, 난처한 상황입니다. 세 개의 어셈블리를 서로 참조 (예를 들어, 대리자 메서드의 알림 등록 또는 공용 메서드 호출), 모두 강력한 이름으로 서명 할 때까지 컴파일합니다. 다른 두 사람은 강력한 이름이 없기 때문에 나는 그 중 하나를 컴파일 할 수 없습니다. 내가 뭘 놓치고 있니? 세 가지 모두에 대해 강력한 이름을 만들었지 만 snk를 포함하고 컴파일 할 수는 없습니다.서로를 참조하는 세 어셈블리의 이름을 강력하게 지정합니다.

+0

순환 종속성? – affan

+0

내가 아는 누구도. – Shawn

답변

4

세 가지 모두에 사용하려는 하나의 snk 파일을 만든 경우 프로젝트의 상황에 맞는 메뉴에서 기존 항목 추가를 선택하십시오.

snk 파일을 탐색 한 다음 추가 버튼 옆에있는 화살표를 클릭하여 "링크로 추가"를 선택하십시오.

프로젝트 속성에서 서명 탭에서 "어셈블리 서명"확인란을 선택한 다음 프로젝트에 방금 추가 한 키 파일을 선택하십시오.

그 트릭을해야합니다.

+0

+1. 당신이이 물건을 알고있는 것처럼 보이고 궁금 해서요, 모두에게 같은 열쇠를 사용하는 데있어서 단점이 있습니까? – Skurmedel

+2

나는 그 순간을 안다. 실제로 관련된 Microsoft 어셈블리가 동일한 PublicKeyToken (전역 어셈블리 캐시에서이를 확인할 수 있음)을 사용하여 같은 키 파일로 서명 된 경우 iirc로 표시됩니다. – Anton

+0

5 개의 어셈블리가 있고 헛되이 5 개의 키를 생성하는 경우 약간 지루합니다. – Skurmedel

2

강하게 명명 된 어셈블리는 다른 강하게 명명 된 어셈블리 만 참조 할 수 있습니다. 당신이 강력한 이름의 어셈블리를 참조하면

, 당신은 버전 관리 및 보호 명명 같은 특정 혜택을받을 것으로 예상된다. 강력한 이름의 어셈블리는 다음이 혜택을받지 않는 간단한 이름으로 어셈블리 을 참조하는 경우, 당신은 당신이 강력한 이름의 어셈블리를 사용에서 파생와 DLL 충돌이 되돌릴 것 혜택을 잃게됩니다. 따라서 강력한 이름의 어셈블리는 다른 강력한 이름의 어셈블리 만 참조 할 수 있습니다.

MSDN에서 인용.