問題タブ [assembly-signing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - asp.net mvc アプリのアセンブリに署名する必要がありますか?
asp.net mvc アプリをデプロイする場合、DLL に署名する必要がありますか? これらは GAC には配置されません。
c# - 署名されていないアセンブリを既存のアプリケーションに統合する
ベンダーに戻らないと解決できないと確信している問題がありますが、最初にここで問題を浮かび上がらせることにしました。
とにかく、既存のアプリケーションに組み込む必要があるサードパーティのアセンブリがありますが、署名されていません。既存のすべての製品アセンブリが署名されているため、これは明らかに頭痛の種であり、これらから新しい dll を参照するには、署名しない必要があります。私は本当にそれをしたくありません。
a) ベンダーに戻って署名してもらうか、b) それを参照する dll に署名しない以外のオプションはありますか?
clickonce - ClickOnce 厳密な名前の依存関係の署名
多くの依存DLLがあるWindowsアプリケーションがあります。このアプリケーションを発行すると、DLL の 1 つに対してエラーが返され、前提条件としてマークされるためには強力に署名されている必要があります。この問題を解決するにはどうすればよいですか?
.net - アセンブリ メタデータを保持しながら外部 DLL に強力に署名するにはどうすればよいですか?
プロジェクトで使用する署名されていないライブラリがいくつかあります。私のアプリケーションは強力に署名されているため、ライブラリも同様に署名されている必要があります。
以下を使用してこれらのライブラリに署名します。
問題は、バージョン番号などのメタデータが、現在署名されている DLL で失われることです。ライブラリ間のいくつかの依存関係が壊れているため、これは問題です。これらのライブラリのソース コードを実際にコンパイルせずにバージョン番号を保持するにはどうすればよいですか?
アップデート
実際には、この問題を示すのは特定の DLL であり、ILMerge を使用してビルドされていることがわかりました。おそらくこれが問題の原因です。明確にするために: ILMerge によって生成された DLL には適切なメタデータがありますが、それを逆アセンブルして再アセンブルした後でのみ、メタデータは消えます。
更新 2
Reflector で DLL を開きましたが、少なくともバージョン番号は残っているようです。Windows エクスプローラーのファイル プロパティ ダイアログ/詳細タブを使用して常に確認していました。したがって、代わりに欠落しているのはマニフェストだと思います。
f# - Mono の F# で dll に署名する際の問題
mono の F# で dll に署名しようとすると、エラーが発生します。
dll が生成されず、次のエラーが返されます。
キーファイルは Windows で生成されましたが、違いはありますか?
アップデート:
Mono 2.6.4 の使用
c# - 署名済みアセンブリをロードする際のバージョン番号に注意してください
これをデバッグするのに 1 時間費やし、ついに PEBCAK の問題を解決しました。
国際化されたアプリケーションがあります。アプリケーションの重要な部分では、リフレクションを使用して、構成されたソースから型を読み込みます。したがって、構成には、次のようなエントリがあります。
アプリケーションは、次のコードでコンポーネントをロードします。
コードに署名したときに惨めに失敗しました。Fusion ログ ビューアからの出力は次のとおりです。
PEBCAK は、複数の文化におけるサテライト アセンブリに問題があるかどうかを判断するのに 1 時間費やしたことです。
いいえ、問題は、バージョンとして 2.0.0.0 を指定し (上記の構成スニペットを参照)、アセンブリが 2.0.3946.17829 のデバッグ バージョンを取得する場合、それは異なるバージョン番号であることです。解決策は、構成を次のように変更することでした。
私の質問: ロードするバージョンを指定でき、CLR はより高いバージョンをロードすると思いました。そうでないのはなぜですか?何が恋しいの?
.net - キーファイルに署名せずにクラスライブラリソースを解放しますが、単体テストでは内部クラスにアクセスする必要があります。どうすればよいですか?
状況は次のとおりです。
- 完全なソースをクラスライブラリにリリースしたい
- 公開したくないキーファイルを使用して、署名したバイナリもリリースしたい
- バッチファイルとビルド前のステップを提供します。これにより、存在しない場合はローカルで新しいキーファイルが作成され、誰でもすぐにソースコードの使用を開始できるようになります。
- テストプロジェクトでは、メインプロジェクトの内部クラスを参照する必要があります
- 内部クラスにアクセスするには
[assembly: InternalsVisibleTo("...")]、メインプロジェクトのAssemblyInfo.csファイルに属性を追加する必要があります - プロジェクト出力に署名しているので、その属性のPublicKey部分を指定する必要があります
- これは、公開したくないキーファイルにバインドされます
では、どうすればこれを解決できますか?
テストライブラリではなくメインプロジェクトの出力に署名し、InternalsVisibleTo属性にアセンブリ名のみを指定すると、次のコンパイル時エラーが発生します。
エラー1フレンドアセンブリ参照'Mercurial.Net.Tests'が無効です。厳密な名前で署名されたアセンブリは、InternalsVisibleTo宣言で公開鍵を指定する必要があります。C:\ Dev \ VS.NET \ Mercurial.Net \ Mercurial.Net \ Properties \ AssemblyInfo.cs 22 31 Mercurial.Net
したがって、明らかに、テストプロジェクトの出力に署名しないだけでは十分ではありません。
プロジェクトに署名する設定を削除し、バイナリビルドスクリプトの一部としてプロジェクトファイルを変更する唯一のオプションはありますか?すなわち。<SignAssembly>false</SignAssembly>ビルドする前に、プロジェクトファイルの要素を探して変更しますか?
c# - 厳密な名前でアセンブリに署名することはできますが、サードパーティの DLL が署名されていない場合はどうなりますか?
署名アセンブリの背後にある基本的な考え方は理解していますが、Telerik またはサード パーティの DLL を使用するときに問題があります。2 つの独自の .DLL を使用する .exe があります。これらの DLL は、エンタープライズ ライブラリ DLL と Telerik DLL を使用します。
私はすべてのプロジェクトに厳密な名前 .snk を付けましたが、コンパイラをコンパイルすると、エンタープライズ ライブラリ DLL などは署名されていないと説明されます。これは理にかなっています。
te sn.exe -Vr コマンドで検証を無効にしたり、プロジェクトの署名を遅らせたりしたくありません。しかし、これはどのように機能するのでしょうか?洞察力に感謝します。
.net - アプリケーション署名を使用して実行を制御する
さまざまな DLL (C# DLL および C++ DLL) を呼び出す .NET アプリケーション (.exe C#) があります - 再コンパイルするソース コードがあります ...
今、私の目標は、証明書を使用してアプリケーション (exe + dll) に署名し、次のことを行うことです。 - 証明書が OS にインストールされていない場合 -> アプリケーションは起動しません。- 証明書が OS にインストールされている場合 + DLL が署名されていないか、別の証明書 (exe に使用) で署名されている場合 -> その DLL が呼び出されると、アプリはクラッシュするはずです。
これを行うことは可能ですか?.NET でコード署名を使用していますか? そうでない場合、アプリケーションに署名する目的は何ですか?
c# - al.exeを使用して厳密な名前でアセンブリに署名する場合の「モジュール名」とは何ですか?
http://msdn.microsoft.com/en-us/library/xc31ft41.aspxのガイドに従って、厳密な名前でアセンブリに署名しようとしています。
重要な指示は次のとおりです。
そしてそれは言う
module nameは、アセンブリの作成に使用されるコードモジュールの名前です。
これが何を意味するのかわかりません。文字通りの意味で、私は上記をcsc.exeのコンポーネントとして解釈します(つまり、アセンブリを作成しました)が、このコンテキストでは明らかにこれは無意味です。
それで、最初にこれは何を指し、次に(私のメタ学習を支援するために)それが何であるかを推論するためにどのように取り組むのでしょうか?ドキュメントの簡潔さを考えると、それは私には明白または直感的であるはずだという印象を受けますが、現在はそうではありません。
いくつかのランダムな名前(例:blah.blah)を指定しようとしましたが、次のエラーが発生します:
ALINK:エラーAL1047:ファイル'c:\ path \ to \ proj \ bin \ Debug\blah.blah'のインポート中にエラーが発生しました-システムは指定されたファイルを見つけることができません。
編集:さらに読んでみると、モジュール名はコードの名前であるという印象を受けますが、.csファイルを指定することもできませんでした-と言われていDatabase file is corrupt and may not be usableます。