4

次の状況を考慮してください。

  • 私の Windows フォーム アプリケーションには、フォームがあります。
  • そのフォームには .resx ファイルがあります。
  • フォームは、別のアセンブリ ("Other.dll") のクラス ("OtherClass") を使用します。
  • 「Other.dll」は、メイン アプリケーションと同じ VisualStudio 2010 ソリューションに組み込まれています (同じソリューション内の別のプロジェクトにすぎません)。
  • メイン プロジェクト (Windows フォーム アプリケーション) で、「Other.dll」プロジェクトへの参照を適切に追加しました。

すべてがうまく機能します(予想どおり)。

次に、"Other.dll" に含まれる型の名前空間を "Old.Namespace" から "New.Namespace" に変更する必要があります。

  1. VS2010 で、"Other.dll" プロジェクトの [プロパティ] ウィンドウを表示します。
  2. 「デフォルトの名前空間」テキスト ボックスの名前空間を「Old.Namespace」から「New.Namespace」に変更します。
  3. それに応じて、関連する .cs ファイルの名前空間を変更します
  4. 変更した「Other.dll」プロジェクトを再構築します。エラーなし。修正した「Other.dll」が正常に作成されました。

問題は次のとおりです。

この後、ソリューション全体を再構築すると、コンパイラが停止し、フォームの .resx ファイルが無効であると報告されます。


「無効な Resx ファイルです。.RESX ファイルで使用されている型Old.Namespace.OtherType、その他、バージョン 1.0.0.0、Culture=neutral、PublicKeyToken=null を読み込めませんでした。必要な参照がプロジェクトに追加されていることを確認してください。行 1521、位置 5"


明らかに、.resx ファイルはまだどこかから古い名前空間を持つ型を参照しています。その「どこか」は、.resx ファイルのバイナリ セクション内にあるようです。

質問: .resx が新しい型 (変更された名前空間を持つ) を参照する必要があることを理解させるにはどうすればよいですか?

助けてください、私は本当にここで進む方法がわかりません...

4

4 に答える 4

10

私は同じ問題を抱えていましたが、解決策はresxファイルからデータセクションを削除することでした

于 2013-05-21T05:06:28.067 に答える
2

私も同じ問題を抱えていました。他のいくつかのオプションを試した後、Stefania Mereut のアドバイスに従い、resx ファイルからデータ セクションを削除しました。リソースを再度追加すると、データ セクションが正しく書き直されたようです。

于 2013-06-24T21:48:11.637 に答える
0

resxファイルを手動で開き、このバイナリリソースのタイプ名を新しい正しいタイプ名に変更する必要があります。これは、resxファイルに直接手動で追加された非標準の(つまり、文字列や画像ではない)リソースだと思います。

これらは、ResXエディターの「その他」セクションでのみ表示できると思います。これらを介して追加することはできません。

于 2012-11-27T15:04:49.507 に答える