.net core 同时使用.NET Framework和。NET核心特定代码

.net core 同时使用.NET Framework和。NET核心特定代码,.net-core,.net Core,我们有一个.NET Framework商业库,我们正在对其进行修订,以便在.NET Core上运行。 这就引出了一个问题,我们如何处理仅为.NET Framework和.NET Core的代码?我如何构建这个?我想到了以下几点: 代码在每个方法中执行运行时检查,并调用适当的代码。这可能不起作用,因为当类第一次实例化时,它将尝试从其他平台加载引用 有一个包装类,该类的代码将根据平台调用相应的类。我认为这将避免加载不存在的包的问题 使用反射创建并调用适当的类。创建两个WindwardPlatform

我们有一个.NET Framework商业库,我们正在对其进行修订,以便在.NET Core上运行。

这就引出了一个问题,我们如何处理仅为.NET Framework和.NET Core的代码?我如何构建这个?我想到了以下几点:

  • 代码在每个方法中执行运行时检查,并调用适当的代码。这可能不起作用,因为当类第一次实例化时,它将尝试从其他平台加载引用
  • 有一个包装类,该类的代码将根据平台调用相应的类。我认为这将避免加载不存在的包的问题
  • 使用反射创建并调用适当的类。创建两个WindwardPlatform.dll库,每个库具有相同的公共类、版本号和强命名
  • 还有别的吗
  • 我问谁在谈论如何部署。上面的问题是如何构造依赖于平台的代码

    更多详细信息:

    我们有一个商业软件产品,我们出售。它目前运行在.NETFramework上,我们正在将其移植到.NETCore上运行。它由12个DLL和3个EXE组成

    我发现了3种特定于.NET Framework的方法(如果我无法解决另一种方法,可能有4种)。它们是使用登录用户或显式提供的凭据从\server\share读取文件的代码。我们的所有其他代码都与.NET Core 3.1兼容

    12个DLL中有两个需要这些readFile()方法。所以他们需要调用(它们都是静态方法)这个特定于平台的代码。在.NETCore的情况下,它目前不会起任何作用。但在未来,我们可能会想出一种提供此功能的方法

    编译所有这些都是微不足道的。在代码周围添加#if子句也很容易。问题是我应该构建什么?我想有一套DLL,人们可以下载(通过NuGet)而不考虑平台。这可以通过反射来实现


    但问题是,实现这一点的最佳方法是什么?

    库是否严重依赖于.NET标准不支持的.NET Framework功能?@Fabio这是一个好问题。不。它看起来将是4个方法。在SDK样式的项目中,条件编译@LexLi,并且使用条件编译方法,我是否创建一个WindwardFramework.dll和WindwardCore.dll,其中两个都有相同的签名,其他dll然后调用安装的那个?或者我是否有一个WindwardPlatform.dll,它是为每个dll构建的,以便其他dll以相同的名称调用它?或者我可以有一个单独的DLL来调用适当的类,这些类是以两种方式构建的,但在同一个DLL中?请先尝试一下。这样一个SDK样式的项目应该生成一个NuGet包,而不是单个程序集。