2013-05-08 6 views
8

Visual Studio 2012 SDK의 기본 VSPackage 템플릿은 강력한 이름 지정을 사용하는 프로젝트를 생성합니다.VSIX (Visual Studio Extensions)는 강력한 이름을 사용해야합니까?

강력한 이름 지정은 전이 적이므로 추가 한 참조 (예 : 동일한 솔루션의 다른 프로젝트 또는 타사 종속성)도 강력한 이름이어야 함을 의미합니다.

강력한 타사 종속성을 느끼지 못하므로 VSIX에서 강력한 이름을 제거하는 것이 좋습니다.

이 작업의 단점은 무엇입니까?

+0

내 VSIX에서 강력한 이름을 제거하면 Visual Studio에 확장 프로그램이 표시되지 않습니다. Visual Studio 2015를 사용하고 있습니다. –

답변

4

이미 VSIX를 배포 할 수 있고 GAC에 아무 것도 필요하지 않은 경우 Visual Studio에서 강력한 이름의 서명이 필요하지 않습니다. 템플릿 마법사는 GAC에 설치해야하기 때문에 강력한 이름 서명이 필요하다고 생각합니다.

어쨌든 원하는 이유가있을 수 있습니다. 패키지가 다른 확장 프로그램에서 사용하는 공개 API를 제공하는 경우 공개 API를 사용하는 다른 사용자로 공용 DLL을 참조 할 수 있습니다. 공개 인터페이스 바이너리의 이름을 강력하게 지정하고 프로젝트 설정 방법에 따라 강력한 이름의 모든 것을 서명해야 할 수도 있습니다.

또한 강력한 서명이없는 경우 다른 확장자와 이름 충돌이 발생할 수 있습니다. "Package.dll"이라는 DLL을 만들고 다른 확장 프로그램도 만들었지 만 강력한 이름으로 바이너리를 서명하지 않으면 CLR이 약간 혼란 스러울 수 있습니다. 따라서 강력한 이름 서명이 아닌 경우 어셈블리 이름이이 위험을 피하기 위해 "충분히 독창적"인지 확인하십시오.

Roslyn 언어 서비스를 내부적으로 테스트 할 때 Roslyn 비트가 모두 포함 된 VSIX를 설치하면됩니다. 소스 제어 내역을 빠르게 살펴보면 Microsoft에서 코드를 배송하는 과정의 일부로 마침내 패키지 바이너리에 1 년 6 개월 동안 서명하지 않았 음을 의미합니다.

+1

> 템플릿 마법사는 GAC에 설치해야하기 때문에 강력한 이름 서명이 필요하다고 생각합니다. 올바르지 않습니다. 그들은 강력한 지명이 필요하지만 GAC에있을 필요는 없습니다. – kzu