签署混合代码汇编

发布于 2024-12-07 07:42:44 字数 939 浏览 2 评论 0原文

我有一个用 C++ 托管和非托管编写的混合汇编。为了签署此程序集,我使用延迟签名和以下构建后事件:

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

这在我自己的 PC(VS2010 英语,Windows XP 32 位)上没有任何问题。

如果我将此项目转移到另一台 PC(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 没有强名称。我不明白这一点,因为同一个项目在我的第一台机器上构建没有问题。

I have a mixed assambly written in C++ managed and unmanaged. To sign this assembly I use delayed signing with the following Post-build event:

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

This works without any problems on my own PC (VS2010 english, Windows XP 32Bit).

If I transfer this project on another PC (VS2010 german, Win7 32Bit), this build step failes with an error message.

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

What can be the reason?

Edit:
Starting the tool in command prompt it says:

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

It says that the dll doesn't have a strong name. I don't understand that, because the same project builds without problems on my first machine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

各空 2024-12-14 07:42:44

我找到了解决方案:
问题是,在我原来的 PC 上我使用 VS2010,在第二台 PC 上我使用 VS2010 SP1。

没有 SP1 的 VS2010 存储在项目文件中:

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

带有 SP1 的 VS2010 存储:

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

因此,带有 SP1 的 VS2010 忽略在没有 SP1 的情况下设置的 /DELAYSIGN 选项。因此 sn.exe 无法对程序集进行签名。

在我原来的电脑上安装SP1并再次设置延迟标志选项解决了问题。

I found the solution:
The problem was that on my original PC I'm using VS2010 and on the second PC I'm using VS2010 SP1.

VS2010 without SP1 stores in project file:

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

VS2010 with SP1 stores:

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

So VS2010 with SP1 igonores the /DELAYSIGN option that was set without SP1. And so sn.exe couldn't sign the assembly.

Installing SP1 on my original PC and setting the delay sign option again solved the problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文