0

ローカライズするまでフォームはうまく機能していましたが、実行時例外が生成され、リソースが見つかりませんでした。

名前空間は、ルートから 1 レベル余分にネストされています。

namespace MyApp
{
  namespace NextLevel
  {

    <MyForm class>

  }
}

および MyApp もアセンブリ名に対応します。

NextLevel を削除して、MyApp::MyForm のみを削除し、以前と同じように機能します。

ローカライズを削除すると、ネストされているかどうかに関係なく、同様に機能します。

重要な場合、これは C++/CLI と dll アセンブリです。

resx ファイルを試してみました。リソース名テンプレートの間に .NextLevel を追加しましたが、結果は同じです。

私のコア リソースはニュートラル (埋め込み) で、次に英語のリソース (サテライトになります) です。

何か案は?

resourcemanager がそれらを見つけるために、リソースはどのように内部的に命名されますか?

とても感謝しております。

ありがとう。

4

1 に答える 1

0

解決しました-これが私がしたことです。

サイドプロジェクトでは、ネストされた名前空間レベルを追加してもまったく同じ問題/結果が得られました。リソース名を正しく作成するために、resxファイルに「.NesxtLevel」などの追加レベルを追加しました。

名前が変更されたリソースファイルを、埋め込み管理対象リソースとしてリンカー入力に追加しました。

そしてそれはうまくいきました-しかし私は感じました-なぜ私はここに各リソースファイルを手動で入力しなければならないのですか?

ビルドログを調べたところ、/outはまだ/ASSEMBLYRESOURCEとして参照されていることがわかりました。リソースファイルは、resxファイルのベース名にrootnamespaceを加えたものと同じであり、追加の名前空間を含む論理名ではありません。

resxファイルと同じベース名の古いリソースファイルを手動で削除しました。

そしてそれはそれを解決しました。リンカーオプションで追加した埋め込みリソースも削除できます。

プロジェクトの再構築によって古いリソースファイルも削除されると常に考えていましたが、明らかにそうではありませんでした。したがって、VSがコマンドラインを作成しているときに、論理名としてroonamespace + resx-filenameを持つリソースファイルが存在する場合、リソースコンパイラ設定によって作成されたものではなく、そのファイルを選択するようです。

VS 2005なので、MSに話しかけても無駄です。それが解決されてうれしいです。

于 2012-06-08T03:50:17.797 に答える