gpt4 book ai didi

c# - 从 .Net 框架应用程序中的 .Net Core 库调用方法

转载 作者:行者123 更新时间:2023-12-04 09:32:32 25 4
gpt4 key购买 nike

使用 VisualStudio 2019。
有3个组件:

  • .Net Framework 4.7.2 - 主应用程序
  • .Net Standard 2.0 - 通用接口(interface)库
  • .Net Core 3.1 - 实现通用接口(interface)库的库

  • 以下也是正确的:
  • .Net Framework 4.7.2.引用资料 .Net Standard 2.0公共(public)图书馆通过Nuget
  • .Net Core 3.1.引用资料 .Net Standard 2.0公共(public)图书馆通过Nuget (并实现)

  • 我正在尝试创建 .net core 3.1 的实例程序集,然后从 Framework 4.7.2 调用该实例的方法应用。 Framework app 知道要调用哪些接口(interface)方法。
    实例创建工作正常,但是,当我尝试调用该实例的方法时 - 引发以下异常:

    {"Could not load file or assembly 'System.Runtime, Version=4.2.2.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of itsdependencies. The system cannot find the filespecified.":"System.Runtime, Version=4.2.2.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"}


    遵循此线程中提到的建议 How do you reference a netstandard project from .net project in VS2017?我添加了对 NETStandard.Library v2.0.3 的 Nuget 引用到主要的 .Net Framework 应用程序,但它没有解决问题。
    是否可以在 .net 框架应用程序域中使用 .net 核心库?我究竟做错了什么?

    最佳答案

    最终,问题可以追溯到这里:

    .Net Core 3.1 - library that implements common interface library


    这是 特定平台实现通用接口(interface)库的库;您只能从 netcoreapp3.1(或更高版本)使用它。
    如果您想使用 .NET Framework 代码库中的该库,该库应该执行以下操作之一:
  • 目标 netstandard2.0 - 如果你在实现中不需要任何特定于框架的东西
  • 多目标 netcoreapp3.1 和 netstandard2.0 - 如果您想在 netcoreapp3.1 功能可用时使用它们,或者使用低级通用实现,否则
  • 多目标 netcoreapp3.1 和 net472 - 如果实现完全是特定于平台的并且不可能有通用实现

  • 多目标就像更改 csproj 一样简单:
    <TargetFramework>netcoreapp3.1</TargetFramework>

    <TargetFrameworks>netcoreapp3.1;netstandard2.0</TargetFrameworks>
    你会自动得到一个 NETCOREAPP3_1NETSTANDARD2_0可以使用 #if 测试的构建符号,或者您可以通过条件在 csproj 中做出其他决定,例如:
    <ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0' OR '$(TargetFramework)'=='netcoreapp3.0'">
    <PackageReference Include="System.Data.SqlClient" Version="4.6.1" />
    </ItemGroup>

    关于c# - 从 .Net 框架应用程序中的 .Net Core 库调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62771329/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com