衛星アセンブリについていくつか質問があることは知っていますが、それらを実装しようとするとまだ問題があります。
私の目標は、各カルチャを1つのアセンブリに分離し、必要に応じて一度に1つのアセンブリのみを再コンパイルできる柔軟性を提供することです。1つだけに小さな変更を加えるだけの場合は、すべての言語をコンパイルしたくありません。言語
衛星アセンブリがどのように機能するかを完全に理解したいと思います。これが私の現在の理解です:
サテライトアセンブリは、アプリケーション全体を再コンパイルしなくてもbinディレクトリにドロップできます。つまり、アプリが正しく機能するためにこれらのアセンブリを必要としません(フォールバックリソースが指定されている場合)。
SAは単一の文化にリンクする必要があります
これで、ツールを使用してSAを生成できます。al
または、.resxファイルを追加すると、Visual Studioで生成できます。SAが作成されます(binフォルダーに、指定したカルチャのフォルダー構造を確認できます)。
質問1.これらのdllは、Visual Studioによって生成されたものと、al
ツールによって生成されたものと同等ですか?
質問2.これらのdllはすべて、機能するために共通の名前を共有する必要がありますか?(一貫性を保つために必要なことはわかっていますが、名前を共有していない場合、たとえば、al
異なる名前を指定するツールを使用して作成する場合)、ロードする.Net Frameworkで認識できますか?
質問3.クラスを使用する場合ResourceManager
、アセンブリカルチャごとに1つのインスタンスをインスタンス化する必要がありますか?(名前にカルチャが含まれているため、アセンブリ名が異なります。現在のカルチャに一致するようにロードするように埋め込みリソースファイルを手動でフォーマットし、そのアセンブリを手動でロードする必要がありますか?おそらく最初はロードされないためです。 、カルチャフォルダ内のファイルパスを指定して手動でロードする必要がありますか?)
質問4.これらのSAは.NetFrameworkによって自動的にロードされますか、それとも明示的にロードする必要がありますか?
質問5。それらをロードする必要がある場合、これは、コントロールタグで宣言的にリソースを指定する場合、それらをロードするためにカスタムリソースファクトリを作成して登録する必要があることを意味しますか?
質問6.コードなしでVisualStudioのクラスプロジェクトにいくつかのカルチャのリソースを追加すると、それらは自動的に埋め込まれます。コンパイルすると、各カルチャのサテライトアセンブリが作成されますが、これらのdllは関連していますか?名前や名前空間などで関係しているのかな
これらの質問はすべてこれに基づいています。アセンブリをbinフォルダーに追加し、でグローバルアセンブリのようなものを指定するだけResourceManager
で、別のアセンブリにある場合でもリソースが自動的に読み込まれると思いました。 (そのため、アセンブリ名や複数の衛星アセンブリがどのように関連しているかについての私の懸念)単一のアセンブリでリソースを定義する場合と同じように、を呼び出すだけですResources.MyResourceKey
。
私はあなたの地獄に感謝します、このトピックは私を夢中にさせています=(