Partilhar via


Fazer não codificar seqüências específicas de localidade

TypeName

DoNotHardcodeLocaleSpecificStrings

CheckId

CA1302

Category (Categoria)

Microsoft.globalização

Quebrando alterar

Não separável

Causa

Um método usa uma seqüência de caracteres literal que representa parte do caminho para determinadas pastas do sistema.

Descrição da regra

The System.Environment.SpecialFolder enumeração contém membros que se referem a pastas especiais do sistema. Os locais dessas pastas podem ter valores diferentes em sistemas operacionais diferentes, o usuário pode alterar alguns dos locais de e os locais são localizados.Um exemplo de uma pasta especial é a pasta de sistema, que é "C:\WINDOWS\system32" no Windows XP mas "C:\WINNT\system32" no Windows 2000.The Environment.GetFolderPath método retorna os locais associados a Environment.SpecialFolder enumeração. Os locais retornados por GetFolderPath são localizadas e apropriado para o computador que está em execução no momento.

Esta regra divide os caminhos de pasta recuperados usando o GetFolderPath método em níveis de diretório separada. Cada seqüência de caracteres literal é comparado com os símbolos e, se uma correspondência for encontrada, será considerado que o método está criando uma seqüência de caracteres que se refere ao local de sistema associado com o token.Para portabilidade e possibilidade de localização, use o GetFolderPath método para recuperar os locais das pastas de sistema especiais em vez de usar literais de seqüências de caracteres.

Como corrigir violações

Para corrigir uma violação dessa regra, recuperar o local usando o GetFolderPath método.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se a seqüência literal não for usada para se referir a um dos locais de sistema associados com o Environment.SpecialFolder enumeração.

Exemplo

O exemplo a seguir cria um caminho para a pasta de dados de aplicativo comuns, que gera três avisos da regra.Em seguida, o exemplo recupera o caminho usando o GetFolderPath método.

Imports System

Namespace GlobalizationLibrary

   Class WriteSpecialFolders

      Shared Sub Main()

         Dim string0 As String = "C:"

         ' Each of the following three strings violates the rule.
         Dim string1 As String = "\Documents and Settings"
         Dim string2 As String = "\All Users"
         Dim string3 As String = "\Application Data"
         Console.WriteLine(string0 & string1 & string2 & string3)

         ' The following statement satisfies the rule.
         Console.WriteLine(Environment.GetFolderPath( _ 
            Environment.SpecialFolder.CommonApplicationData))

      End Sub

   End Class

End Namespace
using System;

namespace GlobalizationLibrary
{
   class WriteSpecialFolders
   {
      static void Main()
      {
         string string0 = "C:";

         // Each of the following three strings violates the rule.
         string string1 = @"\Documents and Settings";
         string string2 = @"\All Users";
         string string3 = @"\Application Data";
         Console.WriteLine(string0 + string1 + string2 + string3);

         // The following statement satisfies the rule.
         Console.WriteLine(Environment.GetFolderPath(
            Environment.SpecialFolder.CommonApplicationData));
      }
   }
}