在编译时捕获资源文件名错误

时间:2012-02-23 12:43:33

标签: xamarin.ios monodevelop

我正在使用Monotouch创建我的第一个iOS应用程序,并且我从我的资源目录中加载了大量图像。我偶尔会在文件名中输入一个拼写错误,然后应用程序会崩溃,我会发出一些无法理解的错误消息。 (我现在会尝试在任何一天将解密堆栈跟踪添加到我的技能组合中......)

我在想,必须有一种更聪明的方法来处理这个问题。例如,可以有一个实用程序脚本,该脚本遍历资源目录并根据其内容构造全局常量列表。资源中的每个文件都有一个条目。

这样,MyResources / Icons / HomeIcon.png将由常量MyResources.Icons.HomeIcon_png表示。然后,人们可以拥有类似Inotify(不知道Mac上会是什么)的东西,观察资源目录并在每次更改时重新生成常量文件。

这当然也可以为资源提供良好的自动完成功能。

也许已经有类似的东西已经在Monodevelop或在线某处?否则我该如何设置呢?

或许还有一些其他智能方法可以缓解这个问题?

3 个答案:

答案 0 :(得分:1)

您的主要问题是资源名称中的拼写错误未及早发现,并且只会在实际运行应用时导致崩溃。

您建议的基于可用资源生成的全局常量列表的解决方案有点整洁,但据我所知,这还不存在。

同时,您可以手动构建此全局常量列表,并创建一个单元测试,以验证此列表中的所有元素是否为有效资源(通过自动循环它们,当然 - 将资源添加到列表中不应该要求改变测试。)

通过这种方式,您可以更早地捕获拼写错误(当您运行单元测试而不是运行应用程序时),这是您最关心的问题。此外,如果您找到/编写您想象的脚本,您的应用程序代码已经准备好了。

答案 1 :(得分:0)

我为您提交了Xamarin bugzilla的增强错误:https://bugzilla.xamarin.com/show_bug.cgi?id=3760

答案 2 :(得分:0)

所以我花了四个宝贵的时间来制作这个小蟒蛇脚本,解决了我的问题。目前,这是解决我问题的最佳方案。

http://github.com/oivvio/Monodevelop-Resources-as-Constants