在VS2010下的某些C ++ / CLI项目属性页中不支持%样式宏?

时间:2010-04-22 13:03:33

标签: visual-studio-2010 macros c++-cli resx

我们目前正在评估VS2010,并已将我们的VS2008 C ++ / CLI项目升级为新的.vcxproj格式。我注意到我们在项目设置中设置的某个属性没有正确翻译。在配置属性下 - >托管资源 - >资源逻辑名称,我们曾经(在VS2008中)设置:

$(IntDir)\$(RootNamespace).$(InputName).resources

表示所有.resx文件都要编译成

OurLib.SomeForm.resources

装配体内部。 (组装时调试部分被删除)

根据MSDN,$(InputName)宏不再存在,应替换为%(Filename)。但是,在翻译上述行以交换这些宏时,它似乎永远不会扩展。它尝试编译的第二个.resx文件,我得到一个“LINK:致命错误LNK1316:重复的托管资源名称'Debug \ OurLib。%(Filename).resources”。这向我表明,%style宏未在此处展开​​,至少在此特定属性中是这样。

如果我们没有在该属性中设置任何内容,则默认行为似乎是将子目录添加为前缀,例如:

OurLib.Forms.SomeForm.resources

其中Forms是.resx文件所在项目的子目录。仅当.resx文件位于正在构建的项目的直接子目录中时,才会发生这种情况。如果.resx文件存在于磁盘上的其他位置(也就是.. \ OtherLib \ Forms \ SomeForm2.resx),则不会添加此前缀。

这导致加载表单资源时出现问题,因为它没有考虑这个可能的前缀,即使我们使用标准的Forms Designer方法来获取资源:

System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(SomeForm::typeid));

并且不要按名称指定.resources文件。

我刚才描述的问题可能与原始问题不一样,但如果我要修复资源逻辑名称问题,我认为这一切都会消失。有没有人有关于这些%宏的信息以及允许使用它们的位置?

0 个答案:

没有答案