3

しばらく前に、ここで Stack Overflow、 Assembly Names and Versionsについて次の質問をしました。

サードパーティの依存関係の1つが厳密な名前のアセンブリではないため、厳密な名前でアセンブリに署名できないため、署名できないことに気づきました。

アセンブリ ファイル名 MyAssembly.dll を MyAssembly.v.1.1.dll に単純に変更しようとしましたが、これを実行して名前を変更したアセンブリを参照すると、残りの参照のようにコピーされません。ファイル名とアセンブリの Identity 属性が一致していないことが原因のようです。

プロジェクト C の依存関係であるプロジェクト A と B があります。プロジェクト A は MyAssembly.dll v.1.0 を参照する必要があり、プロジェクト B は MyAssembly.dll v.2.0 を参照する必要があるため、両方をプロジェクト C の bin/ に配置できる必要があります。フォルダを解放します。

何をする必要がありますか?どうすればこれを修正できますか?

4

4 に答える 4

8

理想的には、自尊心のあるサード パーティのアセンブリ開発者はアセンブリに署名します。私は次のことを試します:

  1. サード パーティのアセンブリ プロバイダーに連絡して、署名を依頼できるかどうかを確認してください。
  2. サード パーティのアセンブリ プロバイダーがオープン ソースの場合は、厳密な名前のキーを使用して自分でソースをダウンロードしてコンパイルします。(これをプロジェクトに戻すことを検討してください)。

それ以外の場合 (ライセンスで許可されている場合):

  1. 次のようにildasm.exeilasm.exeを試してください。

    ildasm.exe /out:TheAssembly.il TheAssembly.dll

    ilasm.exe TheAssembly.il /key=MyKey.snk /dll /output=TheAssembly.dll

  2. 他の人が述べたようにILMergeを試してください。

それ以外の場合は、現在サード パーティのアセンブリにある機能の別のオプションを探す必要がある場合があります。

頑張ってください!

于 2008-10-30T19:09:53.747 に答える
5

1 つのオプションとして、ILMergeを使用してサード パーティのアセンブリに署名することもできますが、サード パーティがアセンブリに非常に定期的に更新を展開している場合、これを更新するのは少し面倒です。

于 2008-10-28T14:47:43.560 に答える
1

サードパーティのライブラリを逆アセンブルして再コンパイルし、自分で署名することができます。もちろん、ライセンスに違反している場合や、サードパーティのライブラリのライセンスを認識していない場合は、これを行うべきではありません (使用していると仮定します)。そうは言っても、サードパーティと連絡を取り合っている場合は、署名済みのバージョンを提供するよう依頼してください.

于 2008-10-28T20:14:29.467 に答える
0

サード パーティに署名付きのアセンブリを要求できない場合 (または多くの場合、プロジェクトが放棄された場合) は、自分でアセンブリに署名する必要があります。ロイドからの回答を含むオンラインの例の多くは、往復中に問題を引き起こすことがあります。

ILMerge にはそれ自体のリスクが伴い、特定のプロジェクトでは保守が不可能で困難な場合があります。

これらすべての制限を克服し、この一見単純なタスクを確実に実行するために、.NET マネージ アセンブリの署名を自動的に実行するアプリケーションを作成しました。これは、要件に応じて、UI、コマンドライン、またはプログラム API から実行できます。アプリの詳細を読んで、ここからダウンロードできます: http://brutaldev.com/post/2013/10/18/NET-Assembly-Strong-Name-Signer

于 2013-10-18T22:04:03.317 に答える