0

最初に Visual Studio 2003 で作成され、2008 に変換された (成功した) Win Forms C++ ソリューションがあり、現在、それを Visual Studio 2010 に変換しようとしています。

ソリューションはエラーなしでビルドされ、実行すると、フォームのリソースからイメージ リストを読み込もうとすると、マニフェストが見つからないという例外が発生します。例外は、次のコード行で発生します。

this->m_imageList->ImageStream = (__try_cast<System::Windows::Forms::ImageListStreamer *  >(resources->GetObject(S"m_imageList.ImageStream")));

問題が見つかったと思います。2008 アセンブリの ildasm を使用してマニフェストを調べると、フォームのリソースについて次のように表示されます。

.mresource public SDTP.SDTPDataMonitorForm.resources
{
  // Offset: 0x00000000 Length: 0x00006DB0
}

2010 アセンブリのマニフェストは次のようになります。

.mresource public SDTPnet.SDTPDataMonitorForm.resources
{
  // Offset: 0x00000000 Length: 0x00004F57
}
.mresource public '..\\temp\\Debug\\SDTP.SDTPDataMonitorForm.resources' as '..$temp$Debug$SDTP.SDTPDataMonitorForm.resources'
{
  // Offset: 0x00008E80 Length: 0x00004F57
}

最初のインスタンスの余分な「ネット」テキストと、2 番目のインスタンスの余分な ..$temp$Debug のために、それを見つけることができないと確信しています。

最後に、私の質問: プロジェクト設定のどこで修正すればよいですか? ..\temp\Debug はプロジェクト パスの一部です...「中間ディレクトリ」設定を $(Configuration) だけに変更すると、少し遊んでみると、次のようになります。

.mresource public 'Debug\\SDTP.SDTPDataMonitorForm.resources' as Debug$SDTP.SDTPDataMonitorForm.resources
{
  // Offset: 0x00008E80 Length: 0x00004F57
}

まだ例外を生成するマニフェストファイルで。

助けてくれてありがとう...

4

1 に答える 1

0

.resxファイルを右クリックしてプロパティを選択し、「リソース論理名」を編集します

于 2012-11-01T16:54:08.070 に答える