3

私の質問は、ここ数時間グーグルした後に見つけた質問と似ています。しかし、私が読んだものでそれを動作させることができなかったので、助けていただければ幸いです。Windowsフォームを含むsome.thingというフォルダー内に、(たとえば)some.thingというC ++/CLIプロジェクトがあります。私はすべてのクラスを名前空間some::thingに入れていました。なんで?誤解したのかもしれませんが、どこかでそれが標準だと読んでいました。とにかく、それはここでは問題ではありません。デザイナーからリソース(背景画像)をフォームに追加するまで、すべてが正常に機能しました。ランタイム例外を生成します:System.Resources.MissingManifestResourceException。

メッセージは、指定されたカルチャまたはニュートラルカルチャに適切なリソースが見つかりませんでした。コンパイル時に「some.thing.myForm.resources」がアセンブリ「some.thing」に正しく埋め込まれているかリンクされていること、または必要なすべてのサテライトアセンブリがロード可能で完全に署名されていることを確認してください

さて、私がグーグルでスタックオーバーフローしたものについては、これはそれほど珍しいことではありませんが、提供されたソリューションは私の場合には機能しないか、C ++ CLIでは機能しないか、または私の初心者にとって十分に明確ではありません。

フォームクラスコードの行を変更してみました。gcnew System::ComponentModel::ComponentResourceManager(...)デフォルトの名前空間のプロジェクト設定を検索し、リソースファイルのコードを確認し、名前空間を定義するためのプロパティを検索しました...解決できません。デザイナーの背景画像が見られるようになりたいです。助けていただければ幸いです。

4

1 に答える 1

4

C ++/CLIプロジェクトでこれに苦労していました。元の質問の下にある私のコメントを参照してください。実行時に、フォームをロードするときに、たとえば「Namespace1.Form1.Resources」を探していました。ただし、リソースファイルはたとえばNamespace2.Form1.resourcesでした。

プロジェクトの各ビルド構成のEmbeddedResource要素の下にあるLogicalName要素を変更することで、これを修正することができました。(プロジェクトをアンロードし、.vcxprojファイルで検索/置換を実行しました)。に変更しました

<LogicalName>$(IntDir)$(RootNamespace).%(Filename).resources</LogicalName>

ただし、これらのLogicalName行が原因であり、生成された実際の.resourceファイルの名前と一致しませんでした。

したがって、状況はまったく同じではないかもしれませんが、プロジェクトファイル内のLogicalName値に関連していると思います。(フォームごとにLogicalNameeオーバーライドもあります。上記が機能しない場合は、それらもチェックしてください。空であるため、すべてのフォームでプロジェクトのデフォルトのLogicalNameを使用できました。)

2008年から2010年へのVSアップグレードに問題があるのだろうか?私たちの問題はその時点で始まりました。

于 2012-08-07T20:11:31.557 に答える