2011-09-29 7 views
1

나는 C++로 작성된 혼합 assambly를 관리 및 비 관리 대상으로 사용합니다. 나는 다음과 같은 빌드 후 이벤트와 지연 서명을 사용하여이 어셈블리에 서명하려면혼합 코드 어셈블리 서명

이 내 자신의 PC (VS2010 영어, 윈도우 XP 32 비트)에 아무 문제없이 작동
sn -R $(TargetPath) $(ProjectDir)Fischer.snk 

.

다른 프로젝트 (VS2010 독일어, Win7 32 비트)에서이 프로젝트를 전송하면이 빌드 단계가 실패하고 오류 메시지가 나타납니다.

Fehler 1   error MSB3073: Der Befehl "sn -R C:\Daten\APRGX\DotNet\VisualData\Master3DControlClasses\Project\Debug\Fischer.APRGX.MathAlg.Native.dll c:\Daten\APRGX\DotNet\MathAlg\Native\Fischer.snk :VCEnd" wurde mit dem Code 1 beendet.   C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets   113  6   Fischer.APRGX.MathAlg.Native 

어떤 이유가있을 수 있습니까?

편집 : 은 명령 프롬프트에서 도구를 시작 그것은 말한다 :

"C:\Daten\APRGX\DotNet\VisualData\Master3DControlClasses\Project\Debug\Fischer.APRGX.MathAlg.Native.dll" stellt keine Assembly mit einem starken Namen dar. 

그것은 DLL이 강력한 이름이없는 것을 말한다. 같은 프로젝트가 내 첫 기계에서 문제없이 구축되기 때문에 이해할 수 없습니다.

+0

더 나은 진단을 얻으려면 Visual Studio 명령 프롬프트에서 직접 명령을 입력하십시오. –

+0

위의 편집을 참조하십시오. – MTR

+0

-R은 어셈블리를 사임하는 데 사용됩니다. 이전에 서명이 지연되었을 것입니다. 완료되지 않은 것 같습니다./DELAYSIGN 링커 옵션. –

답변

1

해결책을 찾았습니다 : 문제는 저의 원래 PC에서 VS2010을 사용하고 두 번째 PC에서 VS2010 SP1을 사용하고 있다는 것입니다. 프로젝트 파일에서 SP1을 저장하지 않고

VS2010 : SP1의 점포

<Link> 
    <GenerateDebugInformation>true</GenerateDebugInformation> 
    <AdditionalDependencies> 
    </AdditionalDependencies> 
    <KeyFile>$(ProjectDir)Fischer.snk</KeyFile> 
    <DelaySign>true</DelaySign> 
</Link> 

VS2010 : SP1과

<LinkKeyFile>$(ProjectDir)Fischer.snk</LinkKeyFile> 
<LinkDelaySign>true</LinkDelaySign> 

그래서 VS2010는 SP1없이 설정 한/DELAYSIGN 옵션을 igonores. 그래서 sn.exe는 어셈블리에 서명 할 수 없었습니다.

원래 PC에 SP1을 설치하고 지연 기한 옵션을 다시 설정하면 문제가 해결되었습니다.