我无法在.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();
}
}
}
答案 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>