9

次のビルド後の手順で、この質問/clrに従って署名しようとしているスイッチを使用するマネージ C++ アセンブリがあります。

sn -Ra "$(TargetPath)" MyKey.snk

ただし、これにより次のエラーが発生します。

C:\Path\Assembly.dll does not represent a strongly named assembly

何がうまくいかないのですか?

4

3 に答える 3

11

AssemblyInfo.cpp で遅延署名のアセンブリをマークしましたか?

[assembly:AssemblyKeyFileAttribute("MyKey.snk")];
[assembly:AssemblyDelaySignAttribute(true)];
于 2011-02-25T13:07:34.640 に答える
7

私はこれを最終的に理解しました-リンクされた質問に従って、Linker/Advanced/KeyFileオプションを設定してそれが機能することを期待することはできません-sn.exeアセンブリに署名するために使用する必要がありますがそれでもLinker/Advanced/KeyFileオプションを設定する必要があります。

要するに、/ clrアセンブリに署名するには、次の両方を行う必要があります。

  1. Linker/Advanced/KeyFileプロパティページでキーファイルを指定します
  2. sn.exeビルド後のステップとしてアセンブリに署名するために使用します

(を使用すること[assembly:AssemblyKeyFileAttribute("MyKey.snk")]は、プロジェクトのプロパティダイアログでキーファイルを設定することと同じだと思います)。

于 2011-03-10T04:35:11.900 に答える
6

マークされた回答は、最終的な解決策に到達するのに役立ちました (そのため、私から +1 を受け取ります)。

ただしAssemblyInfo.cpp、VS2010 で を作成する方法を理解するために、イライラする数分を費やさなければなりませんでした。

以下は、問題に対する「より多くの」完全な回答です。

#include "stdafx.h"

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;

[assembly:AssemblyKeyFileAttribute("YourAssembly.snk")];
[assembly:AssemblyDelaySignAttribute(true)];

次に、ビルド後のステップとして、実行しますsn -Ra YourAssembly.dll YourAssembly.snk

于 2012-05-04T18:30:26.977 に答える