DevExpressソースコードコンパイルの概要z



Devexpress Source Code Compilation Summary Z



この記事の内容には、基本的な知識(GAC、アセンブリの強力な署名、フレンドアセンブリ)、コンパイルプロセス、GAC登録、ツールボックスの追加、多言語サポート、ランタイムおよび設計時のデバッグが含まれます。

送信元アドレスリンク: http://pan.baidu.com/s/1eQm1ZFk パスワード:39qw
ソースコードのコンパイルに関しては、私はあまりにも長い間投げていました、私は自分自身を投げ、公式ウェブサイトに投げ、DXPERに投げました、今日、ついに終わりがあります
コンパイラ環境 ツール:Visual Studio 2010ソースコード:DXperienceソースコード14.2.3.14339(ソースコードは整理されています。変更は必要ありません。ソリューションファイルはsln WinForm WinForm.slnに配置されます)ソースコードの構造 最終的なコンパイル結果をよりよく確認するために、公式のDevExpressバージョンがインストールされている場合は、最初にそれをアンインストールしてください。 DevExpressのソースコードのコンパイルは、公式のDevExpressバージョンのインストールに依存しません。 コンパイル対象 1. DevExpressですべてのWinForm関連コンポーネントをコンパイルします。2。コンパイルが完了したら、ツールボックスに手動で追加できます。3。コントロールをツールボックスからフォームにドラッグアンドドロップすると、デザインビューが正常に機能し、ランタイムは次のようになります。また、正常です。 4.多言語サポートを提供します。5。ランタイムと設計時間をデバッグできます。 コンパイルの基本 コンパイルを開始する前に、基本を確認してください GAC 1. GAC GlobalAssemblyキャッシュ、グローバルアセンブリキャッシュとは2. GACに登録する必要がある理由GACに登録されたアセンブリは、システム全体で共有できます。3。登録および登録のキャンセル方法.netに付属のツールgacutilを使用します。フレームワークgacutil / i [abc.dll]、現在のディレクトリにあるabc.dllファイルをGACに登録します。登録するファイルが他にもある場合は、リストファイルを使用できます。 DevExpressソースコードがコンパイルされた後、さらに多くのファイルが生成されます。バッチ登録を使用できます。コマンドはgacutil / il list.txtで、list.txtの形式は次のとおりです。DevExpress.BonusSkins.v13.2.dllDevExpress.Charts.v13.2.Core.dllDevExpress.CodeConverter.v13.2.dll ……1行に1つのファイル名登録解除は登録に似ています。.netフレームワークツールのヘルプを参照できます。 強力なアセンブリ署名 1.強力なプログラム署名とはアセンブリを生成するときに、秘密鍵ファイルを指定します(秘密鍵ファイルは秘密であり、公開されません)。この方法でコンパイルされたアセンブリは、強力な署名アセンブリと呼ばれます。 2.署名を使用する理由l生成されたアセンブリの一意性を確認します。強く署名されたアセンブリには公開鍵があり、特定の秘密鍵で生成されたアセンブリのみがこの公開鍵を持ちます。 lアセンブリが不法に改ざんされるのを防ぎます。アセンブリが強力に署名されると、公開鍵はアセンブリ内に保存されます。アセンブリが読み込まれると、CLRは公開鍵を検証します。不法に改ざんされた場合、公開鍵の検証は失敗し、例外がスローされます。 l署名されていないアセンブリはGAC3に登録できません。署名の使用方法l秘密鍵を生成します(PS:この秘密鍵はデモンストレーション目的のみであり、ソースコードでは使用されません).netフレームワークツールsn、sn-を使用します。 k MyKey.snkであり、生成された秘密鍵ファイルは、現在のディレクトリのMyKey.snkに保存されます。

l公開鍵を表示する最初に公開鍵をファイルに書き込みます

次に、公開鍵を確認します
4.VSで署名を指定するVS1で署名を指定するには、少なくとも2つの方法があります。AssemblyInfo.csファイルで署名ファイルのパスを指定します。
2.プロジェクトプロパティの[署名]タブ
上記の2つの方法のいずれかを選択してください。 2番目の方法は、VS2005以降でのみサポートされます。現在、DevExpressは2番目の方法を推奨しています。ソースコード内のすべての署名はこのメソッドを使用します。 5. DevExpressの署名DevExpress会社が製品をリリースしたとき、製品に強力に署名するために秘密鍵を使用しました。現在、公開鍵がb88d1754d700e49aとしてマークされていることだけを知っています。プログラムによってロードされたアセンブリの公開鍵がb88d1754d700e49aである場合、DevExpress会社によって使用されていることが証明されています。 、他の人から提供されていない6.ソースコードの署名ソースコードをコンパイルする前に、独自の秘密鍵を生成する必要があります。生成された秘密鍵は、DevExpress.Keyファイルに配置されます。ソリューション内のすべてのプロジェクトはこの署名を使用します。ここで私たちの公開鍵を見ることができます
これは、コンパイルしたアセンブリ公開鍵が94a041a7af35fb7fとしてマークされており、他の誰も模倣したり改ざんしたりできないことも意味します。 (追記:この公開鍵はsrc DevExpress.Key key.txtファイルにあります) 友達集会 1.フレンドアセンブリとはデフォルトでは、内部修飾子がアセンブリで使用されている場合、タイプまたはメンバーにはアセンブリ内でのみアクセスできます。外部からアクセスできるようにする必要がある場合は、友人のメタアセンブリが必要です。 [MSDN]フレンドメタアセンブリは、他のアセンブリの内部タイプとメンバーにアクセスできるアセンブリです。アセンブリがフレンドアセンブリとして指定されている場合は、タイプする必要がなくなり、他のプログラムがアクセスできるようにメンバーがパブリックとしてマークされます。2。フレンドアセンブリが必要なのはなぜですか。 l単体テスト、テストコードは別のアセンブリで実行されますが、テスト対象のアセンブリの内部メンバーにアクセスする必要がありますlクラスライブラリは複数のアセンブリに分かれており、アセンブリは相互の内部メンバーにアクセスする必要があります3.DevExpressのフレンドアセンブリDevExpressの多くの基本関数は、DevExpress.Dataに配置されています。このアセンブリには多くのフレンドアセンブリがあります。 DevExpress.Dataの下でAssemblyInfo.csを開くと、そのフレンドアセンブリをはっきりと見ることができます。
つまり、上記のモジュールでは、DevExpress.Dataの内部型に直接アクセスできます。他のモジュールのフレンドアセンブリは、DevExpress.Dataに似ています。 コンパイルプロセス 1.1。 コード取得 コードは圧縮ファイルにパッケージ化されています 二。 署名を変更する 秘密鍵が生成され、プロジェクトは秘密鍵で署名されており、変更は必要ありません。独自の署名を使用する場合は、以下の手順に従う必要があります。1。.net Frameworkのツールを使用して、StrongKey.snkという名前の強力な署名ファイルを生成し、src DevExpressの下の同じ名前でファイルを上書きします。キー2.sln WinForm WinForm.slnを開き、ソリューション全体で公開キータグと公開キーへのすべての参照を置き換えます 3.3。 コンパイル sln WinForm WinForm.slnを開き、ソリューションを再構築します ファローアップ 登録済み GAC 生成されたファイルの一部は次のとおりです。 さらに、Designフォルダーには、設計中にサポートする必要のあるアセンブリが含まれています。生成されたDLLファイルをGACに登録し(リストを使用してバッチで登録する方法。前の記事を参照してください)、デザインのDLLも登録する必要があります。 ツールボックスが追加されました VSを開き、新しいWinFormプロジェクトを作成し、ツールボックスを開いて、空白スペースを右クリックし、[タブの追加]を選択します。 次に、ここで「DevExpressBuild」という名前を自分で入力し、右クリックして「アイテムの選択」を選択します。 ポップアップダイアログボックスで、[参照]を選択し、GACでDevExpressDLLを選択します。ここでは、ChartControlを例として、C: Windows Microsoft.NET assembly GAC_MSIL DevExpress.XtraCharts.v14.2を選択します。 UIの下のフォルダの下にあるDLL。確認すると、次のようにツールボックスが正常に追加されたことがわかります。 他の制御ツールボックスを追加するプロセスも同様です。 (追記:誰かがここに質問があります。ChartControlがDLLファイルDevExpress.XtraCharts.v13.2.UIに配置されていることをどのように知っていますか。特定のコントロールが配置されているDLLに関して、DevExpressに付属のドキュメントに詳細な手順があります。 。参照してください) 結果検査 これでDevExpressのコンパイルは完了しました。コンパイル後に結果を確認しましょう。それでも上記のプロジェクトでは、ツールボックスのChartControlをフォームに直接ドラッグアンドドロップし、最後に独自のコンパイルの結果を確認します。 任意のタイプを選択し、[完了]をクリックして、VSの参照のリストに注意してください 必要なDLLは自動的に参照されています。デプロイするときは、これらのDLLをパッケージ化してクライアントマシンにデプロイするだけで済みます。すでに完璧に近いので、多言語サポートを見てみましょう 多言語サポート たとえば、インストールされているDevExpressバージョンのを使用している場合は、公式Webサイトから必要なリソースファイルをダウンロードできますが、独自にコンパイルするため、公式に提供されている強力な署名付きリソースファイルを直接使用することはできません。これには、言語リソースファイルを自分でコンパイルする必要があります。ソリューションがすべてセットアップされているため、このコンパイルも非常に簡単です(ソースコードが独自の署名でコンパイルされている場合は、dxKB_A421_DXperience_v14.2_(2014-12-16)にコピーされたsrc DevExpress.Key StrongKey.snkを追加する必要があります) DevExpress.Key を使用して、同じ名前のファイルを上書きします)、dxKB_A421_DXperience_v14.2_(2014-12-16) Localization.slnを開いて再生成すると、生成される製品パスはdxKB_A421_DXperience_v14.2_(2014-12-16)になります。 ) DevExpress.Dll、中国語をサポートするためのコントロールが必要な場合は、DevExpress.DLL zh-CNと入力し、フォルダー内のすべてのDLLをGAC Closeに登録して、新しく作成したプロジェクトを再度開きます。作成したChartControlに基づいてリボンを作成します。インターフェイスが終了したことがわかります。 公式のリソースローカリゼーション率は100%ではありませんが、基本的には運用上の要件を満たすことができます。 ソースコードのデバッグ ランタイムデバッグ ソースコードからコンパイルされているので、デバッグは大きな問題にはならないはずです。たとえば、上記のプロジェクトでは、実行時にチャートにポイントを追加したいと思います。このポイントを追加するプロセスを見たい AddPointイベント処理コードは1文のみです DevExpress.XtraCharts.UIプロジェクトのChartControl.csファイルのシリーズ次のように、プロパティにブレークポイントを追加します。 次に、プロジェクトをデバッグし、[AddPoint]ボタンをクリックして、ブレークポイントをヒットします 他のデバッグも同様のプロセスです。 設計時のデバッグ DevExpressコントロールは、設計時にVSを非常によくサポートします。設計段階では、制御プロパティを直感的に設定できます。設計中にDevExpressが何をするかを知りたい場合は、設計中にデバッグできます。セットタイミングデバッグは、ランタイムデバッグと同じではありません。設計時のデバッグでは、実際には1つのVSを使用して別のVSをデバッグしています。ここに例を示します。上記のChartControlコントロールが[時間に設定]にどのように表示されているかを確認したいのですが、[バージョン情報]をクリックするとどうなりますか 1.まず、プロジェクトのプロパティで、[デバッグ]タブを選択し、操作を開始して[外部プログラムの開始]を選択します。次のパスで、VS2010が配置されているパスを選択します。デフォルトはC: Program Files(x86) Microsoft Visual Studio 10.0 Common7 IDE devenv.exeです。つまり、別のVS2をデバッグしたいです。ブレークポイントを追加するワンステップブレークポイントの位置はに基づいています。あなたの要望。今回のブレークポイントは、DevExpress.XtraCharts.DesignプロジェクトのDesigners.csファイルに設定されています。コードのChartControlDesignerクラスのOnAboutメソッド>は次のとおりです(PS:誰かがここに質問があります。この関数を入力する方法を知っていますか? [バージョン情報]をクリックした後、実際には、コードをデバッグする前に、コードを理解する必要があります)
3つ目は、デバッグを開始するF5がデバッグを開始することです。このとき、別のVSが開かれます。この新しいVSでプロジェクトを今すぐ開きます。フォームのChartControlコントロールの右側にある小さな矢印をクリックし、ポップアップインターフェイスで[バージョン情報]を選択します。 VSは決定的にブレークポイントに到達します。次のように 実際、公式の14.2.3インストールバージョンのChartControlコントロールは、[バージョン情報]のクリックに応答しません。このコードは自分で追加して機能します。ポップアップダイアログボックスは次のとおりです これは、伝説的な設計時のデバッグです。現在、アプリケーションは実行されていないことに注意してください。このデバッグ方法は、カスタムコントロールの開発に非常に役立ちます。 Q&A Q :ツールボックスのコントロールをドラッグアンドドロップして 応答がないか、さまざまなエラーが表示されます A:この状況は通常、生成されたディレクトリのDesignフォルダにある「.Design.dll」で終わるファイルが登録されていないことが原因です。 VSでコントロールを設計するには、これらのDLLをGACに登録する必要があります Q : 取る .Design.dll 最後のファイルは、展開中にクライアントマシンにコピーする必要がありますか? A:いいえ、これらのDLLは実行時に必要ありません Q :ツールボックスからコントロールをドラッグアンドドロップします 作り方 VS 自動参照に必要 A:依存DLLをGACに登録します Q :ソースコードでコンパイルされたアセンブリをクラックする必要がありますか? A:いいえ、プロジェクトリファレンスで、参照されているDLLファイルのプロパティで、[ローカルコピー]をtrueに設定してから、ファイルを出力ディレクトリにパッケージ化して、他のマシンにコピーします。

転載:https://www.cnblogs.com/zeroone/p/4818762.html