为什么我仍然有DirectoryNotFoundException,因为下面的路径太长.NET 4.7.2



。NET 4.6.2宣布取消了系统中260个字符的最大路径长度限制。IO API。

没有针对。NET Framework 4.6.2或设置AppContext开关会导致现有行为被阻止使用长于MAXPATH的路径。行为是选择加入以保持与现有应用程序的向后兼容性。

(强调矿(。

我以为是在下面。NET 4.7.2,我将不再需要编写故障保护来防止这个MAXPATH问题。

但是,一旦sourceDirectoryName大于260个字符,此代码就会抛出一个System.IO.DirectoryNotFoundException

var sourceDirectoryName = @"C:UsersMYUSER___DocumentsSandboxtempOneDrive_1_11-04-2022MySuperProject_With_Long_Name_Prefixaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bundle";
var destinationArchiveFileName = @"C:UsersMYUSER___DocumentsSandboxtempOneDrive_1_11-04-2022MySuperProject_With_Long_Name_Prefixaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bundle.out";
ZipFile.CreateFromDirectory(sourceDirectoryName, destinationArchiveFileName);

为什么我在大路径下仍然有问题。NET 4.7.2

也许我读错了那句话,

没有针对。NET Framework 4.6.2或设置AppContext开关会导致现有行为被阻止使用长于MAXPATH的路径。行为是选择加入以保持与现有应用程序的向后兼容性。

但在我看来,瞄准目标的简单事实。NET 4.7.2将导致的行为允许路径长于MAXPATH。

然而,我不得不在app.manifest中手动启用它

<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>

该代码不再触发任何异常。

相关内容

  • 没有找到相关文章

最新更新