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

Xamarin.ios 在编译时捕获资源文件名错误,xamarin.ios,monodevelop,Xamarin.ios,Monodevelop,我正在用Monotouch做我的第一个iOS应用程序,我正在从我的资源目录加载很多图像。我偶尔会收到一个文件名的输入错误,然后应用程序就会崩溃,并发出一些无法理解的错误信息。(我会在任何一天尝试将解密堆栈跟踪添加到我的技能集中…) 我在想,一定有更聪明的方法来处理这件事。例如,可以有一个实用程序脚本,它遍历resources目录并根据其内容构造一个全局常量列表。资源中的每个文件都有一个条目 因此MyResources/Icons/HomeIcon.png将由常量MyResources.Icons

我正在用Monotouch做我的第一个iOS应用程序,我正在从我的资源目录加载很多图像。我偶尔会收到一个文件名的输入错误,然后应用程序就会崩溃,并发出一些无法理解的错误信息。(我会在任何一天尝试将解密堆栈跟踪添加到我的技能集中…)

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

因此MyResources/Icons/HomeIcon.png将由常量
MyResources.Icons.HomeIcon\u png
表示。然后可以使用类似Inotify(不知道在Mac上会是什么)的东西监视资源目录,并在每次更改时重新生成常量文件

当然,这也会为资源提供很好的自动完成

也许在Monodevelop或在线的某个地方已经有类似的东西了?否则我将如何设置它


或者可能有其他聪明的方法来缓解这个问题?

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

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

同时,您可以手动构造此全局常量列表,并创建一个单元测试,以验证此列表中的所有元素都是有效资源(当然,通过自动循环这些元素-向列表中添加资源不需要更改测试)


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

我为您在Xamarin bugzilla上提交了一个增强错误:

所以我花了四个宝贵的小时编写了这个小python脚本,解决了我的问题。现在这是解决我问题的最好办法