0

別のソリューションから変更されたファイルのサブセットを含める必要がある新しい VS ソリューションを作成しました。どちらのソリューションにも、"Microsoft.Windows.Controls" の既定の名前空間があります。古いソリューションのアセンブリの名前は "WPFToolkit" で、新しいアセンブリの名前は "DatePicker" です。新しいソリューションにコピーしたファイルの 1 つは、"ExceptionStringTable.txt" という名前の埋め込みリソースです。内容は次のようになりますが、形式はわかりません。

; DataGrid 選択コマンド
DataGrid_SelectAllCommandText=すべて選択
DataGrid_SelectAllKey=Ctrl+A
DataGrid_SelectAllKeyDisplayString=Ctrl+A

元のソリューションのように、ファイルの「ビルド アクション」を「埋め込みリソース」に設定します。実行時には、次のようにロードされます。

プライベート静的 ResourceManager _resourceManager =
    new ResourceManager("ExceptionStringTable", typeof(SR).Assembly);

コードを実行すると

_resourceManager.GetString(id.String)
この実行時例外が発生しています:

System.Resources.MissingManifestResourceException が発生しました。必要なすべてのサテライト アセンブリがロード可能で、完全に署名されていることを確認してください。」

アセンブリのリソース名をプログラムでリストすると、次のようになります。

  DatePicker.g.resources
  Microsoft.Windows.Controls.Resources.ExceptionStringTable.txt
  Microsoft.Windows.Controls.Properties.Resources.resources

ExceptionStringTable.txt が .resources に相当するものに変換され、アセンブリに埋め込まれて、uri "ExceptionStringTable" がそれを見つけられるようにするにはどうすればよいですか?

4

1 に答える 1

1

txt ファイルを .resource ファイルに変換する必要があります。

resgen.exe ExceptionStringTable.txt

これにより、ExceptionStringTable.resources ファイルが出力されます。次に、このファイルを埋め込みリソースとして追加する必要があります

おそらく、古いプロジェクト ファイルをチェックして、ビルド後のタスクまたはこれを自動的に実行する何かがあるかどうかを確認することをお勧めします。

アップデート:

おそらく最も簡単な方法は、.txt ファイルを .resx ファイルに変換することです。

resgen.exe ExceptionStringTable.txt ExceptionStringTable.resx

そして、このファイルを埋め込みリソースとして追加します。その後、古い .txt ファイルを削除できます。

于 2009-11-06T19:56:06.603 に答える