【问题标题】:WP8 App Crashes after localization本地化后 WP8 应用程序崩溃
【发布时间】:2014-09-19 17:12:34
【问题描述】:

最近,我决定尝试Multilingual App Toolkit,以便在我现有的 WP8 应用程序中添加本地化支持。

我按照说明操作,它为我选择的语言生成了 AppResources 文件,并准备好进行测试。不幸的是,每次我将应用程序部署到我的设备(也尝试使用模拟器)时,它都会立即崩溃,没有任何异常、消息或任何其他类型的信息。我试图清理项目,删除 bin 和 obj 文件夹,禁用我之前添加的语言和多语言应用工具包,但没有成功。

我只使用 AppResources 文件创建了一个新项目,它运行良好。但是,我不认为问题出在我的代码中,因为它在崩溃之前甚至没有到达App.xaml.cs 文件中的App() 方法。

有人知道发生了什么吗?

编辑:
Resources 文件夹是否有大小限制?

编辑 2:
我在 Visual Studio 进程中附加了一个调试器,当我在手机上运行该项目时,会引发以下异常:

线程 0x3d34 已退出,代码为 259 (0x103)。

PresentationCore.dll 中出现“System.NotSupportedException”类型的第一次机会异常

PresentationCore.dll 中出现“System.NotSupportedException”类型的第一次机会异常

EnC:进入调试模式:project 'ProjectName'

在 JetBrains.Platform.ReSharper.VisualStudio.Core.dll 中发生了“System.OutOfMemoryException”类型的第一次机会异常

线程 0x1900 已退出,代码为 259 (0x103)。

Microsoft.Build.dll 中发生了“Microsoft.Build.Exceptions.InvalidProjectFileException”类型的第一次机会异常

“Microsoft.Build.Exceptions.InvalidProjectFileException”类型的第一次机会异常发生在 mscorlib.dll 中

线程 0x27d0 已退出,代码为 259 (0x103)。


谢谢

【问题讨论】:

  • 尝试检查项目属性、启动对象等。在几次小的项目更改后,我在启动时遇到了奇怪的应用程序崩溃,尽管我没有更新那些。
  • 感谢您的评论。我仔细检查了项目属性中的所有内容,但它们似乎没问题。

标签: c# windows-phone-8 localization


【解决方案1】:

我要检查的前四件事是 AppResources.resx 访问修饰符是否是公共的

设计师没有导致错误。

该文件夹名为 Resources。

在工具菜单中启用了多语言应用工具包。

我从未在资源文件夹中遇到过大小问题。我建议从一种语言开始,然后在它功能齐全后添加到列表中。

【讨论】:

  • 好吧,我的起始页中有一个Invalid Xaml 错误,这是我以前没有的。我试图删除整个控件(LongListSelector),但这并没有解决它。我在这里读到不同的问题,删除程序集名称中的空格可以修复它,但我的程序集名称中没有空格。
  • 我已经用更多细节修改了我的问题。
  • 我假设你在 app.xaml 中有这个 应用程序.资源>
  • 我认为我唯一一次遇到奇怪的错误需要修复时,我最终不得不删除设计器并重命名为类似于设计器 1,然后重建以覆盖旧的。我很想知道这最终会是什么。
  • xmlns:local="clr-namespace:Yournamespace" 这在 MainPage.xaml 的顶部?并绑定文本,如 {Binding Path=LocalizedResources.YourTranslationName, Source={StaticResource LocalizedStrings}} 我相信你有这些,但以防万一
【解决方案2】:

我通过做我最想避免的事情来解决这个问题;

我创建了一个全新的项目,将旧项目中的所有文件复制到新项目(本地化文件也是)。现在一切正常。

我认为生成 AppResources.Designer.cs 文件的 ResX 自定义工具有问题。

【讨论】:

    【解决方案3】:

    您是否将本地化文件移至另一个项目或更改了名称?

    如果是这样,请检查 [您的资源文件中的 English.Designer.cs

    还有寻找资源的代码:

    /// <summary>
            ///   Returns the cached ResourceManager instance used by this class.
            /// </summary>
            [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
            public static global::System.Resources.ResourceManager ResourceManager {
                get {
                    if (object.ReferenceEquals(resourceMan, null)) {
                        global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.AppResources", typeof(AppResources).Assembly);
                        resourceMan = temp;
                    }
                    return resourceMan;
                }
            }
    

    在我的代码中,字符串 Localicazation.Resources.AppResources 代表 Project.Folder.ResourceFiles。

    【讨论】:

    • 不幸的是,这并没有什么问题。不过感谢您的回答。
    【解决方案4】:

    这是一个非常罕见的问题。试试这个:创建一个仅包含 AppResources 文件的新项目并尝试部署该项目。如果新应用程序崩溃,那么问题出在 AppResources 文件上;如果不是,那么您的问题出在您的代码中。

    【讨论】:

    • 好吧,正如我所说的应用程序很好,我在代码中所做的唯一更改是从AppResources 获取字符串,而不是硬编码它。不过我会试试的。谢谢。
    • 我试过了,带有 AppResources 的新项目运行良好。我不认为问题出在我的代码上,因为它在崩溃之前甚至没有到达 App.xaml.cs 文件中的 App() 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多