Mitigação: verificações de dois-pontos no caminho

Começando com os aplicativos direcionados ao .NET Framework 4.6.2, várias alterações foram feitas para dar suporte aos caminhos anteriormente sem suporte (em termos de comprimento e formato). Em particular, as verificações da sintaxe adequada do separador de unidade (os dois-pontos) foram corrigidas.

Impacto

Essas alterações bloqueiam alguns caminhos de URI aos quais esses os métodos Path.GetDirectoryName e Path.GetPathRoot anteriormente davam suporte.

Atenuação

Para contornar o problema de um caminho aceitável anteriormente que não tem mais suporte pelos métodos Path.GetDirectoryName e Path.GetPathRoot, é possível fazer o seguinte:

  • Remova manualmente o esquema de uma URL. Por exemplo, remova file:// de uma URL.

  • Passe o URI para um construtor Uri e recupere o valor da propriedade Uri.LocalPath.

  • Recuse a normalização do novo caminho definindo a opção Switch.System.IO.UseLegacyPathHandlingAppContext como true.

    <runtime>  
        <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
    </runtime>  
    

Confira também