.net 使用vscode运行测试时出错:项目文件存在某种问题

dly7yett  于 2023-01-06  发布在  .NET
关注(0)|答案(2)|浏览(217)

在MacOS上使用VSCode调试单个测试(而不是整个套件)时会出现此问题。当我尝试使用vscode调试此测试时,我得到以下输出:

/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error MSB3883: Unexpected exception:  [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error : DirectoryNotFoundException: Could not find a part of the path '/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/bin/Debug/net6.0/ref/Reusable.dll'. [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at Interop.CheckIo(Error error, String path, Boolean isDirectory, Func`2 errorRewriter) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/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) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at System.IO.File.OpenHandle(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :    at Microsoft.CodeAnalysis.BuildTasks.CopyRefAssembly.Copy() [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]
/usr/local/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(4650,5): error :  [/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/Reusable.csproj]

当然,这里的问题是/Users/username/Documents/coding/CSharp/current_projects/Project-Name/Reusable/bin/Debug/net6.0/ref并不存在,但它不是由构建系统生成的!为什么它认为.dll在ref中,而不是在它上面的文件夹中?
只有当我尝试在VS中调试测试时才会发生这种情况。看起来这是项目的问题...有人知道可能是什么问题吗?如果您需要更多信息,请让我知道。如果需要,我可以包括项目文件。

qcbq4gxm

qcbq4gxm1#

我也遇到过这种情况。找到了一个变通方法,将此添加到我的项目文件中:

<PropertyGroup>
  <ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>

https://github.com/microsoft/vscode-azurefunctions/issues/3051中发现此变通方案
这是由于.NET 6 SDK中引入了一项重大更改。请参见:https://learn.microsoft.com/dotnet/core/compatibility/sdk/6.0/write-reference-assemblies-to-obj

kxkpmulp

kxkpmulp2#

如果您使用的是. NET核心测试资源管理器扩展https://marketplace.visualstudio.com/items?itemName=formulahendry.dotnet-test-explorer(可能大多数人都使用),那么还有另一种解决方案,它不需要更改csproj文件。"omnisharp.useModernNet": true.
在此处找到:https://github.com/formulahendry/vscode-dotnet-test-explorer/issues/362

相关问题