-
Notifications
You must be signed in to change notification settings - Fork 341
Description
Description
If the test project is targeting .NET Framework version 4.8.1 or lower, long paths can not be used in tests.
Currently, this can be worked around by prepending \\?\
to every long path or by making paths shorter.
This problem may be solved by making test runners long path aware by adding the necessary elements to the testhost
manifest:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
Steps to reproduce
- Ensure long paths are enabled in the registry:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
-
Clone the sample solution https://github.com/DragonTea135/vstest-long-path-sample.
-
Run tests using Visual Studio,
dotnet test
orvstest.console
.
Expected behavior
All tests should pass in both net481
and net8
projects.
Actual behavior
Test that creates a directory with a long path in the net481
project throws an exception:
System.IO.PathTooLongException : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Lower target framework versions give the same result.
Environment
Windows 11 version 23H2
Visual Studio version 17.11.0
VSTest version 17.11.0