0

我有一个最初使用 Visual Studio 2003 创建的 Win Forms C++ 解决方案,转换为 2008(成功),现在我正在尝试将其转换为 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
}

我确定它找不到它,因为第一个实例中有额外的“net”文本,而第二个实例中有额外的 ..$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 回答