最初に 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
}
まだ例外を生成するマニフェストファイルで。
助けてくれてありがとう...