Strange Path.GetFullPath .Net 4.6.1& 4.6.2文件路径以0x85字符结尾(窗口8)

时间:2016-10-19 10:09:55

标签: c# asp.net c#-4.0

我无法在.Net 4.6.1&之间找到这种奇怪的Path.GetFullPath行为的原因。 4.6.2文件路径以0x85 char(windows 8)结尾。

代码:

var _originalPath = @"D:\user\/web.config." + (char) 0x85;
string _fullPath = Path.GetFullPath(_originalPath);

使用4.6.1这会正确返回: _fullPath = D:\ user \ web.config

但是如果我切换到4.6.2那么它会变成: _fullPath = D:\ user \ web.config。

(参见额外的仍然是!!):(

我错过了一些东西,但我无法弄清楚是什么。

在此领域有知识的人可以帮助解释/解决这个问题吗?

namespace ConsoleApplication1
{
  public class Program
  {
    internal static void Main(string[] args)
    {
        GetVersionFromRegistry();

        var _originalPath = @"D:\user\/web.config." + (char) 0x85;
        string _fullPath = Path.GetFullPath(_originalPath);

        Console.WriteLine(_fullPath);
        Console.ReadLine();
    }
  }
}

1 个答案:

答案 0 :(得分:2)

我无法重现这一点,但这种行为改变可能与对.NET 4.6.2中添加的长文件名的支持有关。根据{{​​3}},您可以通过将以下内容放入app.config来切换回之前的行为:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
  </runtime>
</configuration>