2011-10-17 48 views
0

我在我的C++/CLI项目中有resources.resx文件,并且想创建一个构建来自动构建一个访问器类来帮助在需要时访问资源。我搜索了很多,但还没有找到一个体面的解决方案(使用VS2010)。试图使构建规则创建accessor类到resx文件

我可以创建这个访问器类:

RESGEN/STR:C++ resources.resx

这将创建一个resources.h文件(我想)和resources.resources文件(这是我可以删除)。但是我希望在更改resources.resx文件时运行该命令,这使我很头疼,因为该文件已经有一个构建目标“Managed resource compiler”,并且在该文件上运行resgen时,它包括7个其他资源文件并且没有/ str开关。

到目前为止唯一的自动解决方案是制作预构建事件命令,但这意味着每次构建时都会重新编译整个项目。

有什么建议吗?

回答

0

我解决了这个问题。在该项目的预构建事件我插入这样的:

resgen /str:c++,myApp,resources,resources.h.new resources.resx myApp.resources.resources 
del myApp.resources.resources 
fc /b resources.h resources.h.new > NUL: 
if NOT "%ERRORLEVEL%"=="0" (type resources.h.new > resources.h) 
del resources.h.new 

基本上,我创建了一个新的resources.h并将其与现有的文件进行比较。如果有差异,我使用type来复制文件以更新时间戳。这使得构建引擎只在需要时才更新resources.h。不漂亮,但它完成了工作。