CA1303, DoNotPassLiteralsAsLocalizedParameters, но на самом деле это не так

Мой код получает предупреждение CA1303от Microsoft.Globalization, «Не проходить литералы как локализованные параметры", , но мой код на самом деле не передает литерал:

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, которая автоматически обновляется при каждой фиксации, я не использую ревизию, потому что моя схема управления версиями использует только 3 числа, major.minor.revision)

Но это вызывает вышеупомянутое предупреждение, потому что он думает, что я устанавливаю заголовок tex t из строкового литерала.На самом деле я установил Localizable = Trueв дизайнере, чтобы строка извлекалась из таблицы ресурсов.

Я не хочу задавать заголовок формы статически, потому что (особенно на альфа- и бета-этапах) я хочу, чтобы он имел динамические номера версий.

Вопрос в том, что мне делать, чтобы не получать предупреждение (например, какой код будет делать то, что я делаю, но считаться правильным для FxCop, или как я могу подавить его для этой строки).

8
задан Camilo Martin 21 March 2012 в 12:54
поделиться