VS Code Omnisharp.MsBuild.Projectmanager 无法加载程序集 System.Numerics.Vectors 4.1.3.0

VS Code Omnisharp.MsBuild.Projectmanager can not load assembly System.Numerics.Vectors 4.1.3.0

我在打开新创建的 blazorwasm 项目时遇到问题。 Omnisharp 将无法正确启动。这是输出:

[warn]: OmniSharp.MSBuild.ProjectManager Failed to load project file 'c:\VS.NET2010\CoreApp\Server\CoreApp.Server.csproj'.
c:\VS.NET2010\CoreApp\Server\CoreApp.Server.csproj(1,1)
System.IO.FileLoadException: Kan bestand of assembly System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a of een van de afhankelijkheden hiervan niet laden. De manifestdefinitie van de gevonden assembly komt niet overeen met de assembly-verwijzing. (Uitzondering van HRESULT: 0x80131040)
Bestandsnaam: System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
   bij System.SpanHelpers.IndexOf(Char& searchSpace, Char value, Int32 length)
   bij Microsoft.Build.Evaluation.Expander`2.Function`1.ExtractPropertyFunction(String expressionFunction, IElementLocation elementLocation, Object propertyValue, UsedUninitializedProperties usedUnInitializedProperties, IFileSystem fileSystem)
   bij Microsoft.Build.Evaluation.Expander`2.PropertyExpander`1.ExpandPropertyBody(String propertyBody, Object propertyValue, IPropertyProvider`1 properties, ExpanderOptions options, IElementLocation elementLocation, UsedUninitializedProperties usedUninitializedProperties, IFileSystem fileSystem)
   bij Microsoft.Build.Evaluation.Expander`2.PropertyExpander`1.ExpandPropertiesLeaveTypedAndEscaped(String expression, IPropertyProvider`1 properties, ExpanderOptions options, IElementLocation elementLocation, UsedUninitializedProperties usedUninitializedProperties, IFileSystem fileSystem)
   bij Microsoft.Build.Evaluation.Expander`2.PropertyExpander`1.ExpandPropertiesLeaveEscaped(String expression, IPropertyProvider`1 properties, ExpanderOptions options, IElementLocation elementLocation, UsedUninitializedProperties usedUninitializedProperties, IFileSystem fileSystem)
   bij Microsoft.Build.Evaluation.Expander`2.ExpandIntoStringLeaveEscaped(String expression, ExpanderOptions options, IElementLocation elementLocation)
   bij Microsoft.Build.Evaluation.ToolsetReader.ExpandPropertyUnescaped(ToolsetPropertyDefinition property, Expander`2 expander)
   bij Microsoft.Build.Evaluation.ToolsetReader.EvaluateAndSetProperty(ToolsetPropertyDefinition property, PropertyDictionary`1 properties, PropertyDictionary`1 globalProperties, PropertyDictionary`1 initialProperties, Boolean accumulateProperties, String& toolsPath, String& binPath, Expander`2& expander)
   bij Microsoft.Build.Evaluation.ToolsetReader.ReadToolset(ToolsetPropertyDefinition toolsVersion, PropertyDictionary`1 globalProperties, PropertyDictionary`1 initialProperties, Boolean accumulateProperties)
   bij Microsoft.Build.Evaluation.ToolsetReader.ReadEachToolset(Dictionary`2 toolsets, PropertyDictionary`1 globalProperties, PropertyDictionary`1 initialProperties, Boolean accumulateProperties)
   bij Microsoft.Build.Evaluation.ToolsetReader.ReadToolsets(Dictionary`2 toolsets, PropertyDictionary`1 globalProperties, PropertyDictionary`1 initialProperties, Boolean accumulateProperties, String& msBuildOverrideTasksPath, String& defaultOverrideToolsVersion)
   bij Microsoft.Build.Evaluation.ToolsetReader.ReadAllToolsets(Dictionary`2 toolsets, ToolsetRegistryReader registryReader, ToolsetConfigurationReader configurationReader, PropertyDictionary`1 environmentProperties, PropertyDictionary`1 globalProperties, ToolsetDefinitionLocations locations)
   bij Microsoft.Build.Evaluation.ProjectCollection.InitializeToolsetCollection(ToolsetRegistryReader registryReader, ToolsetConfigurationReader configReader)
   bij Microsoft.Build.Evaluation.ProjectCollection..ctor(IDictionary`2 globalProperties, IEnumerable`1 loggers, IEnumerable`1 remoteLoggers, ToolsetDefinitionLocations toolsetDefinitionLocations, Int32 maxNodeCount, Boolean onlyLogCriticalEvents, Boolean loadProjectsReadOnly)
   bij Microsoft.Build.Evaluation.ProjectCollection..ctor(IDictionary`2 globalProperties)
   bij OmniSharp.MSBuild.ProjectLoader.EvaluateProjectFileCore(String filePath) in D:\a\s\src\OmniSharp.MSBuild\ProjectLoader.cs:regel 123
   bij OmniSharp.MSBuild.ProjectLoader.BuildProject(String filePath) in D:\a\s\src\OmniSharp.MSBuild\ProjectLoader.cs:regel 72
   bij OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.Load(String filePath, ProjectIdInfo projectIdInfo, ProjectLoader loader, Guid sessionId, IDotNetCliService dotNetCli) in D:\a\s\src\OmniSharp.MSBuild\ProjectFile\ProjectFileInfo.cs:regel 113
   bij OmniSharp.MSBuild.ProjectManager.<>c__DisplayClass31_0.<LoadProject>b__0() in D:\a\s\src\OmniSharp.MSBuild\ProjectManager.cs:regel 302
   bij OmniSharp.MSBuild.ProjectManager.LoadOrReloadProject(String projectFilePath, Func`1 loader) in D:\a\s\src\OmniSharp.MSBuild\ProjectManager.cs:regel 313

WRSCH: registratie van assembly-bindingen is uitgeschakeld.
Als u assembly-bindingsfouten wilt registreren, stelt u de registerwaarde [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) in op 1.
Opmerking: er is een prestatiestraf gekoppeld aan de registratie van assembly-bindingsfouten.
Als u deze functie wilt uitschakelen, verwijdert u de registerwaarde [HKLM\Software\Microsoft\Fusion!EnableLog].

这是 csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.0" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Client\CoreApp.Client.csproj" />
    <ProjectReference Include="..\Shared\CoreApp.Shared.csproj" />
  </ItemGroup>
</Project>

我不知道为什么会出现此错误。因此,我无法在此项目中使用 IntelliSense。 我的一个同事没有这个问题。他可以使用以下命令创建一个类似的项目: dotnet new blazorwasm -o CoreApp --hosted

在他的 PC 上,项目可以正常打开,没有任何 OmniSharp 警告。

我不知道为什么我的 PC 上会出现此错误。

有人知道吗?

提前致谢!

问题是 Visual Studio 代码(由 OmniSharp 提供支持)VS 代码扩展的 C# 中包含的 MSBuild 无法正确定位 System.Numerics.Vectors 的特定 4.1.3.0 版本系统.

最好的解决办法是在

中添加正确版本的 DLL
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Numerics.Vectors\v4.0_4.1.3.0__b03f5f7f11d50a3a

另一种解决方案是安装包含该版本 System.Numerics.Vectors 程序集的 .NET Core SDK 3.1.301,然后复制

C:\Program Files\dotnet\sdk.1.301\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Numerics.Vectors.dll

%USERPROFILE%\.vscode\extensions\ms-dotnettools.csharp-1.22.1\.omnisharp.35.3\.msbuild\Current\Bin

此问题可能会在更高版本的 Visual Studio 代码(由 OmniSharp 提供支持)VS 代码扩展

的 C# 中得到解决

您可以在 GAC 中安装的 MSBuild.exe.config 必要版本的 runtime 部分添加。

      <dependentAssembly>
        <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
      </dependentAssembly>
      <dependentAssembly>

检查主机上安装的版本:

gacutil.exe -l System.Numerics.Vectors

通常 gacutil 位于 SDK C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\