21

多言語の RESX ファイルを作成する方法や、AL.exe を使用してサテライト アセンブリを作成する方法に関するチュートリアルはたくさんありますが、単一の EXE ファイルに RESX/Resources/satellite-DLL ファイルを埋め込み、多言語アプリ全体を配布する方法の実際の例は見つかりませんでした。 EXEなど。

ilmerge.exe を使用しようとしましたが、同じ名前の複数の DLL では機能しないようです (カルチャ サテライト DLL は同じ名前を持ち、元々カルチャにちなんで名付けられた異なるサブディレクトリに存在します)。

また、埋め込みリソースを操作する ResourceManager インスタンスを作成する方法もわかりません。

私の目標は、クローズドで事前定義された一連の言語を動的に切り替えられるようにすることです。カルチャ文字列 (つまり "de-DE")、リソース名 (つまり "CancelText") を取得し、埋め込まれたresx/resource/dllに基づいて翻訳されたテキストを返すクラス/メソッドが必要です。

私は VS2008 を使用しています。resx/resource ファイルのプロパティ シートで必要な「ビルド アクション」の設定に注意してください。作業コード サンプルまたはチュートリアル プロジェクトへのリンクが最適です。

4

4 に答える 4

6

これは .NET フレームワークの動作方法ではないため、見つかりませんでした。.NET は、サテライト DLL が特定の名前の場所 (含まれるリソースの言語にちなんで名付けられた iow ディレクトリ。たとえば、、、de... )de-DEにあることを想定しています。chsそのように作業しないと、.NET はその魔法 (現在の UI カルチャに従って正しいリソースを自動的に選択すること) を適用できませんThread.CurrentThread.CurrentUICulture

于 2009-11-24T22:18:30.867 に答える
-1

GetString上記のアプローチを使用しました。GetManifestResourceStream() でマニフェスト リソースを読み込めないという記事では、リソースをストリーム オブジェクトとして正しく取得する方法について説明しています。その後、すべてが機能しました。

于 2012-10-15T23:27:44.610 に答える
-1

このプログラムを使用してください、それは私と一緒に動作します: EXEPack

コマンドツールがあるかどうかわからないので、コンパイルするたびに手動で行う必要があります。

于 2014-02-20T20:01:36.380 に答える