gpt4 book ai didi

visual-studio-2010 - 如果文件已本地化,Visual Studio 2010 不会生成资源 (Resx) 设计器代码

转载 作者:行者123 更新时间:2023-12-04 00:42:36 26 4
gpt4 key购买 nike

在处理 Resx 资源文件时,我刚刚在 Visual Studio 2010 中遇到了最奇怪的行为,我无法理解它。

问题如下: Visual Studio 不会生成 designer.cs file 用于具有本地化名称的资源文件(例如 resource.fr.resx ),但它适用于具有简单名称的其他文件(例如 resource.resx )。

这是我的 Visual Studio 项目设置的快照:

enter image description here

正如你所看到的,我只是用 3 个资源文件做了一个简单的测试:

  • test.resx
  • test2.resx
  • test.fr.resx
  • designer.cs test.resx 的文件和 test2.resx生成得很好。然而 test.fr.designer.cs已创建但始终为空白,无论我做什么。

    我有双重和三次检查:为本地化文件正确设置了自定义工具属性。所有文件的所有属性都完全相同(我使用的是 PublicResxFileCodeGenerator ,但如果我将访问修饰符设置为 internal 并使用 ResxFileCodeGenerator ,则会得到相同的行为)。

    注意:我注意到在创建资源文件时,Visual Studio 通常将访问修饰符默认为“内部”。但是,在创建本地化资源文件 ( resource.fr.resx ) 时,它默认为“不生成代码”。刚刚发现这一点很有趣,因为它证明了 Visual Studio 由于某种原因对本地化文件的处理方式不同。

    --> 我在这里遗漏了什么吗?如果有人对此主题有一些见解,我将不胜感激,这让我发疯。

    最佳答案

    虽然我还没有研究过这个特定的问题,但我在“.resx”文件方面遇到了许多其他问题。 Visual Studio 有时会出错(处理“.resx”文件等),我已经正式向 MSFT 报告了其中的一些(因为它影响了我自己的商业本地化程序)。无论如何,您通常不应该以这种方式命名事物。它实际上违反了 MSFT 的本地化规则。默认语言文件通常不应该包含嵌入式语言代码,因此可能会令人窒息。我需要调查,但你应该做的是创建“Test.resx”,它有一个“Designer.cs”文件,然后是“Test.fr.resx”,它没有。然后将所有默认语言字符串放置在“Test.resx”中,并将相应的法语字符串放置在“Test.fr.resx”中。在代码中,您然后访问在“Test.Designer.cs”中找到的强类型名称,除非您将“System.Threading.Thread.CurrentThread.CurrentUICulture”设置为“fr”,否则您返回的字符串将是默认语言字符串.然后,您将从“Test.fr.resx”中取回字符串的法语版本,除非在那里找不到(没有翻译),在这种情况下,您将从“Test.resx”中取回后备字符串(即默认语言字符串)。这就是中心辐射模型的基本工作原理。

    关于visual-studio-2010 - 如果文件已本地化,Visual Studio 2010 不会生成资源 (Resx) 设计器代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011635/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com