2010-05-05 6 views
1

Visual Studio에서 컴파일 한 후 VB.Net 1.1 응용 프로그램이 제대로 작동합니다. 그러나 ILMerge를 사용하여 모든 참조 된 어셈블리를 단일 실행 파일로 결합하여 이동하기 쉽도록하려고합니다. 내가 ILMerge를 통해 전송하고 그것을 실행하려고하면 나는VB.NET 어셈블리에서 강력한 이름 유효성 검사가 실패했습니다.

는 "강력한 이름 확인이 assembly.exe 실패"오류 .....

을 얻을하지만 내 물건의 어느 것도 강력한 이름입니다! 여기이 게시물을 보았다 Strong Name Validation Failed 및 'Sn.exe를 -Vr merged.exe'를 통해 실행 시도하지만 나에게이 오류 제공 :

가지고 "merged.exe은 강력한 이름의 어셈블리를 대표하지 않습니다" 다른 누구도 전에이 문제가 있었습니까? 어떻게 수정해야합니까?

업데이트 : 강력한 이름 확인이 여기에 진짜 문제가되지 않습니다 같은 느낌을 시작하고

. .NET v1.1을 기반으로 구축되었으며 .NET 버전이 설치된 컴퓨터에서만 실행됩니다 (Windows 2003). 병합 된 실행 파일은 내가 시도한 모든 Windows 2003 컴퓨터에서 그 오류로 죽는 것처럼 보입니다.하지만 더 현대적인 OS (Vista)에서 실행하려고하면 적어도 시작되지만 환경이 좋지 않기 때문에 실제로 테스트하지는 않습니다. 실제 테스트에 적합합니다. 내 app.config에 올바른 설정이 있다는 것을 확인했다

  • (필수 및 V1.1.4322의 지원 런타임 버전을 특정하는) ILMerge를 통해 내 어셈블리를 실행할 때
  • 은 내가 /targetplatform:v1.1 옵션을 사용합니다.

ILMerge가 명확하게 문제를 일으키고 있습니다 (병합하기 전에 문제가없는 것 같습니다). 문제를 해결하는 방법을 모르겠습니다.

+0

사용하는 참조를 문서화하십시오. 솔루션 탐색기에서 "모든 파일 표시"아이콘을 클릭하고 참조 노드를 엽니 다. –

+0

제가 언급 한 것은 COM interop 어셈블리와 표준 시스템 어셈블리입니다. Interop 어셈블리를 내부화하는 것이 아니라이 프로젝트의 일부인 어셈블리 (실행 파일 하나와 DLL) 중 어느 쪽도 서명되어 있지 않습니다. 참조 된 어셈블리 중 어느 것도 서명되지 않았습니다 (핵심 .NET 어셈블리는 제외하고 다시 한 번 내재화하지는 않습니다). –

답변

1

병합 된 바이너리가 작동하려면 매우 오래된 버전의 ILMerge (v1.1)를 찾아서 다운로드해야했습니다. 현재 ILMerge 응용 프로그램이 .NET 1.1 어셈블리를 빌드하는 방식에 버그가 있어야합니다. 고맙게도 온라인에서 찾지 못했기 때문에 내부적으로 하나를 가지고있었습니다.

관련 문제