2016-09-27 1 views
0

다른 환경 제한 사항으로 인해 32 비트 응용 프로그램으로 빌드해야하는 C# 실행 파일을 구축 중입니다. 포스트 빌드 단계에서 나는 3239 응용 프로그램이 2GB 이상의 메모리를 활용할 수 있도록 editbin.exe \LARGEADDRESSAWARE을 사용하고 있습니다. 나는 이것이 Strong Name 검증을 깨뜨리고 있음을 알았지 만. LARGEADDRESSAWARE를 활성화 한 후에 강력한 이름 유효성 검사가 실패합니다.

editbin.exe 명령을 실행하기 전에 나는 sn.exe -vf가 강력한 이름을 확인하기 위해 실행

sn.exe -vf [my exe]

출력을 :

Assembly '[my exe]' is valid가 그럼 난 editbin.exe /LARGEADDRESSAWARE [my exe]' which just exits without any message. I verify that it's enabled to use more than 2GB by checking the headers via DUMPBIN/헤더 [내 EXE]을 실행`.

마지막으로, 나는 sn.exe 명령을 다시 실행하여 다음과 같은 출력 얻을 :

Failed to verify assembly -- Strong name validation failed for assembly '[my exe]'합니다.

강력한 이름 확인을 위반하지 않고 LARGEADDRESSAWARE 기능을 어떻게 활성화 할 수 있습니까?

답변

0

강력한 이름은 강력한 이름을 가진 파일의 해시를 고려합니다. editbin.exe \LARGEADDRESSAWARE으로 파일을 변경하면 파일의 해시가 변경되므로 강력한 이름이 무효화됩니다.

빌드 단계를 변경하고 강력한 이름 단계를 실행하는 전에 정확히 어셈블리가 인지 확인해야합니다. 빌드 파이프 라인에 따라 Visual Studio에서 이름을 지정하는 것이 아니라 명령 줄을 대신 사용하는 것이 좋습니다.

+0

'sn.exe'를 사용하여 명령 줄을 통해 가정합니다. – Fizz

+0

예, sn.exe는 사용자가하는 것처럼 강력한 이름을 적용 할 수있을뿐만 아니라이를 검증 할 수 있습니다. –

관련 문제