gpt4 book ai didi

.net - CA1303,DoNotPassLiteralsAsLocalizedParameters,但我实际上不是

转载 作者:行者123 更新时间:2023-12-02 20:35:51 24 4
gpt4 key购买 nike

我的代码从 Microsoft.Globalization 收到 CA1303 警告,“不要将文字作为本地化参数传递”,但我的代码实际上并未传递文字:

private void MyForm_Load(object sender, EventArgs e)
{
UpdateTitle();
}

private void UpdateTitle()
{
Version version = Assembly.GetExecutingAssembly().GetName().Version;
CultureInfo culture = CultureInfo.CurrentUICulture;
this.Text = String.Format(culture, "{0} v{1}.{2} Alpha r{3}", this.Text, version.Major, version.Minor, version.Build);
}

此代码在每次加载表单时将其标题设置为如下所示:

MyFormNameAsSetInTheDesigner v0.1 Alpha r123

(version.build 实际上包含 SVN 修订版,它在每次提交时自动更新,我不使用 revision 因为我的版本控制方案仅使用 3 个数字, 主要.次要.修订)

但这会触发上述警告,因为它认为我正在从字符串文字设置标题栏文本。事实上,我已在设计器中设置了 Localizes = True,以便从资源表中获取字符串

我不想静态设置表单的标题,因为(尤其是在 alpha 和 beta 阶段)我希望它具有动态版本号。

问题是我该怎么做,这样我就不会收到警告(例如,哪些代码将执行我正在做的事情,但根据 FxCop 被认为是正确的,或者我如何抑制该行的代码)。

最佳答案

基于documentation对于 CA1303,引发警告的原因是您传递了一个文字字符串作为 String.Format 方法的第二个参数,此外,该特定重载的第二个形式参数用 LocalizedAttribute.

因此,警告希望您将字符串 "{0} v{1}.{2} Alpha r{3}" 作为本地化资源放入资源程序集中,并以此引用它。这可能是一个好主意,因为从技术上讲,格式字符串的结构及其内容的固定部分是可本地化的资源。

如果你只是想让 FxCop 闭嘴,你可以 annotate相应地UpdateTitle:

[SuppressMessage("Microsoft.Globalization",
"CA1303:DoNotPassLiteralsAsLocalizedParameters" )]
private void UpdateTitle() { /* ... */ }

关于.net - CA1303,DoNotPassLiteralsAsLocalizedParameters,但我实际上不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804894/

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