2011-09-29 5 views
1

J'ai un fichier assambly écrit en C++ géré et non géré. Pour signer cette assemblée que j'utilise la signature retardée par le suivant événement post-construction:Assemblage de code mixte de signature

sn -R $(TargetPath) $(ProjectDir)Fischer.snk 

Cela fonctionne sans problème sur mon PC (VS2010 anglais, Windows XP 32 bits).

Si je transfère ce projet sur un autre PC (VS2010 allemand, Win7 32Bit), cette étape de construction échoue avec un message d'erreur.

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 

Quelle peut être la raison?

Edit: Démarrage de l'outil dans l'invite de commande, il dit:

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

Il dit que la dll ne dispose pas d'un nom fort. Je ne comprends pas cela, car le même projet se construit sans problème sur ma première machine.

+0

Tapez la commande à la main à partir de l'invite de commandes Visual Studio pour obtenir un meilleur diagnostic. –

+0

Voir ma modification ci-dessus. – MTR

+0

-R est utilisé pour * démissionner * d'un assemblage. Il doit avoir été signé avant le délai. On dirait que ça n'a pas été fait./Option de lieur DELAYSIGN. –

Répondre

1

J'ai trouvé la solution: Le problème était que sur mon PC original j'utilise VS2010 et sur le second PC j'utilise VS2010 SP1.

VS2010 sans magasins SP1 dans le fichier de projet:

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

VS2010 avec les magasins SP1:

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

Alors VS2010 avec SP1 igonores l'option/DELAYSIGN qui a été créé sans SP1. Et ainsi, sn.exe n'a pas pu signer l'assembly.

L'installation de SP1 sur mon PC d'origine et le réglage de l'option de signe de retard à nouveau résolu le problème.