2016-05-16 12 views
1

VS 2010 SP1を使用してC++/CLI DLLを作成しましたが、そのDLLに厳密な名前で署名したいとします。 だから私はVS 2010のコマンドプロンプトでC++/CLI DLLに鍵ペアがありますが、厳密な名前検証に失敗します

sn -k TestNet.snk 

をファイルTestNet.snkを作成し、その後、私はリンカー - >詳細設定>キーファイルのキーファイルを追加することによって、プロジェクトを構成しました。

Visual Studio 2010 SP1 Project Properties

たDLLは、その中に鍵ペアを持っていますが、私は、次のコマンドを使用してDLLを確認しようとすると:

sn -v TestNetDLL.dll 

私は次のエラーを取得する:

Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.1 
Copyright (c) Microsoft Corporation. All rights reserved. 

TestNetDLL.dll does not represent a strongly named assembly 

強い名前のDLLに再度署名しようとすると、次のエラーが表示されます。

Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.1 
Copyright (c) Microsoft Corporation. All rights reserved. 

Failed to install key pair -- Object already exists. 

キーペアはDLLにインストールされていますが、厳密に名前が付けられていません。何が欠けていますか?その他の設定?またはコードに何かを追加する必要がありますか? :(私は私が欠けているのか分からない

、助けてください!あなたのアドバイスや任意の提案をありがとうございました

+1

IIRCでは、VS2010ではC++/CLIアセンブリの署名がborkenでした。mt.exeはマニフェストを埋め込み、ファイルハッシュを変更するときにそれをねじ込みます。遅延署名を使用します。 –

+0

'%(Link.DelaySign)'を '$(LinkDelaySign) 'に置き換え、' KeyFile'にも 'Microsoft.Cpp.Win32.targets'ファイルを編集する必要があった強力なネーミングがありました。 – Medinoc

答えて

1

私はこの問題を解決するために以下のことをやった:。

  1. 私は、鍵ペアファイルを作成するには、このコマンドを実行した

    のsn -k TestNet.snk

  2. は私がキーコンテナ内のキーペアをインストール

    のsn -i TestNet.snk MyTestNetContainer

  3. 私の代わりにキーファイルのキーコンテナを使用するには、VS 2010のプロジェクトと、選択された遅延署名を設定した:YESとしてハンスアンパッサン

  4. で助言私は、プロジェクトを再構築してます。SN.exeでDLLを検証し、検証が成功した「有効である」

    SN -v TestNetDLL.dll のMicrosoft(R).NET Frameworkの強力名ユーティリティのバージョン4.0.30319.1 著作権(C )Mマイクロソフト全著作権所有。

    総会 'TestNetDLL.dllは' 彼らの助言のためのハンスアンパッサンへ

おかげで有効です。

関連する問題