Подписание смешанной сборки кода - PullRequest
1 голос
/ 29 сентября 2011

У меня смешанный ассамблийский язык, написанный на C ++, управляемый и неуправляемый. Чтобы подписать эту сборку, я использую отложенную подпись со следующим событием после сборки:

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

Это работает без каких-либо проблем на моем собственном ПК (VS2010 на английском языке, Windows XP 32Bit).

Если я перенесу этот проект на другой компьютер (VS2010 немецкий, Win7 32Bit), этот шаг сборки завершится ошибкой.

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

В чем может быть причина?

Edit: Запуская инструмент в командной строке, он говорит:

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

Там написано, что у dll нет строгого имени. Я этого не понимаю, потому что тот же проект без проблем собирается на моей первой машине.

1 Ответ

1 голос
/ 30 сентября 2011

Я нашел решение: проблема заключалась в том, что на моем исходном ПК я использую VS2010, а на втором ПК я использую VS2010 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, который был установлен без SP1.И поэтому sn.exe не смог подписать сборку.

Установка SP1 на моем исходном ПК и установка опции знака задержки снова решили проблему.

...