【问题标题】:*System.Text.Json* unable to load when VisualStudio is not installed*System.Text.Json* 未安装 VisualStudio 时无法加载
【发布时间】:2021-12-18 01:04:12
【问题描述】:

我有一个基于 netcoreapp3.1 的 DLL。 DLL 引用 NuGet 包 Microsoft.Extensions.Configuration.Json 版本 5.0.0。如果我将 DLL 部署到未安装 VisualStudio 的另一台 PC 并尝试从第三方程序访问它,则会收到错误消息:

Could not load file or assembly 'System.Text.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Could not find or load a specific file. (0x80131621)

如果我在那台 PC 上安装 VS,它就可以工作。如果我卸载 VS,错误会再次出现。

显然 VS 添加了我的 DLL 所需的一些组件。我该如何解决?

我试图解决的步骤

  • 我明确添加了 NuGet 包 System.Text.Json 版本 5.0.2。错误仍然出现。

.csproj 文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
    <Version>1.0.3</Version>
    <AssemblyVersion>1.0.2.0</AssemblyVersion>
    <FileVersion>1.0.3.0</FileVersion>
    <Copyright>ZOOM Informatik GmbH, Grenchen, Schweiz</Copyright>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="publish\**" />
    <EmbeddedResource Remove="publish\**" />
    <None Remove="publish\**" />
  </ItemGroup>

  <ItemGroup>
    <None Remove="SapServiceReference\swagger.json" />
  </ItemGroup>

  <ItemGroup>
    <OpenApiReference Include="SapServiceReference\swagger.json" ClassName="SapServiceReference" CodeGenerator="NSwagCSharp" Namespace="SapService" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.ApiDescription.Client" Version="5.0.11">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
    <PackageReference Include="NSwag.ApiDescription.Client" Version="13.13.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="System.Text.Json" Version="5.0.2" />
  </ItemGroup>

</Project>

【问题讨论】:

  • 为什么要将 .NET Core 3.1 包与 .NET 5 包混合使用?您不应安装任何大于 3.x.x 的 Microsoft.Extensions.* 包

标签: c# visual-studio .net-core


【解决方案1】:

检查依赖:https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/

此版本要求您使用以下之一:

  • .net 框架 >= 4.6.1
  • .net 标准 >= 2.0
  • .net core 5.0

所以如果您对netcoreapp3.1有要求,则需要使用3.1.20或更低版本

【讨论】:

  • @CamiloTerevinto 显然,但请记住,它不是标准运行的,所以依赖的上下文不是标准的,而是 3.1,因为大概是哪个项目引入了依赖
  • 我选择阅读它对你没有意义;) 让我解释一下,所以.net 核心运行时的 LTS 版本是 3.1 版本,当你编译时你会要求 -framework netcoreapp3.1,你会注意到这里就是这种情况。所以我的目标是这是您可以在项目文件中看到的内容,因此有关 .net 较新版本的考虑并不真正在范围内。在结束书面没有意义之前,我包括了你会从链接中注意到的要求,以提供选项。例如。将依赖项移至标准库,而不是降级参考。
  • 请注意,遇到问题的社区成员通过建议得到了帮助,因此显然它在那里是有意义的。重申一下,在依赖项中直言不讳地说,不支持 .net core 3.1 它不是隐藏的,而是显而易见的。在成员的情况下,引用显然是在 .net core 3.1 程序集中,而不是在 .net 标准的任何版本中。我确实提供了一个链接,指向在 NuGet 上可以看到兼容性列表的位置,我什至将它复制到 :) 引用可能会令人困惑,我同意,但根据经验,你会知道在哪里查看,我们必须这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 2012-01-25
  • 2014-10-13
  • 2014-09-18
  • 1970-01-01
相关资源
最近更新 更多