formulahendry / formulahendry/vscode-dotnet-test-explorer

DirectoryNotFoundException .NET 6 Workaround / Fix

Open
#362 0 comments 5 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
208
Forks
93
PR merge metrics
No merged PRs in 30d

Description

Hello,

I had a very difficult time for a while using the "Debug" link in my unit tests.

I created a project using a Development Container, targeting .NET 6.

I then created a class library and unit test project as described here

https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test

At first the tests weren't discovered but that was fixed by setting my "dotnet-test-explorer.testProjectPath" to "**/*.sln"

The tests at this point worked both by running dotnet test, and by using the Test Explorer UI.

However, when I tried to Debug I constantly got errors like this:

```
----- Debugging test method Prime.UnitTests.Services.PrimeService_IsPrimeShould.IsPrime_ValuesLessThan2_ReturnFalse -----

Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error MSB3883: Unexpected exception: [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : DirectoryNotFoundException: Could not find a part of the path '/workspace/unit-testing-using-dotnet-test/PrimeService/bin/Debug/net6.0/ref/PrimeService.dll'. [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Microsoft.CodeAnalysis.BuildTasks.CopyRefAssembly.Copy() [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]

Build FAILED.

/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error MSB3883: Unexpected exception: [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : DirectoryNotFoundException: Could not find a part of the path '/workspace/unit-testing-using-dotnet-test/PrimeService/bin/Debug/net6.0/ref/PrimeService.dll'. [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : at Microsoft.CodeAnalysis.BuildTasks.CopyRefAssembly.Copy() [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
/usr/share/dotnet/sdk/6.0.200/Microsoft.Common.CurrentVersion.targets(4650,5): error : [/workspace/unit-testing-using-dotnet-test/PrimeService/PrimeService.csproj]
0 Warning(s)
2 Error(s)

Time Elapsed 00:00:01.27
```

After reviewing OmniSharps documentation I learned that I need to set my "omnisharp.useModernNet" to true, and that resolved my issue, and I am now able to debug unit tests properly.

So in the end the resolution for me was to modify my .vscode/settings.json file to the following:

```
{
"dotnet-test-explorer.testProjectPath": "**/*.sln",
"omnisharp.useModernNet": true
}
```

I hope that helps somebody else too.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.