.net core 在.net framework应用程序中使用.net核心dll?

.net core 在.net framework应用程序中使用.net核心dll?,.net-core,.net Core,我想我知道这个问题的答案,但我想确定一下。我们正试图深入.net核心。我们希望在.net core中编写一些DLL,但我们希望避免将.net core运行时推送到每个工作站。我知道如果您正在执行.net core exe,您可以将运行时嵌入到应用程序中,这样您就不必在每台计算机上实际安装.net core 我们正在推动的所有计算机都是已安装.net framework的windows计算机。如果我们想使用.net核心DLL,那么我们必须安装.net核心运行时,不是吗 谢谢……这里是一个来自.ne

我想我知道这个问题的答案,但我想确定一下。我们正试图深入.net核心。我们希望在.net core中编写一些DLL,但我们希望避免将.net core运行时推送到每个工作站。我知道如果您正在执行.net core exe,您可以将运行时嵌入到应用程序中,这样您就不必在每台计算机上实际安装.net core

我们正在推动的所有计算机都是已安装.net framework的windows计算机。如果我们想使用.net核心DLL,那么我们必须安装.net核心运行时,不是吗


谢谢……

这里是一个来自.net标准dll的csproj文件示例,我们使用该文件,它被.net核心和.net框架应用程序使用。TargetFrameworks用于指定要使用的框架。常量是为可能需要执行的任何特定于框架的代码定义的。在我们的例子中,我们有一些特定的实例,其中框架与核心的代码略有不同

<PropertyGroup>

   <TargetFrameworks>netstandard1.3;netstandard2.0;net452;net461;net471</TargetFrameworks>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Copyright>...</Copyright>
    <Company>...</Company>
    <Authors>...</Authors>
    <Description>...</Description>
    <Version>1.0.20</Version>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
    <DefineConstants>TRACE;DEBUG;</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
    <DefineConstants>NETSTANDARD2_0;</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)'=='netstandard1.3'">
    <DefineConstants>NETSTANDARD1_3;</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)'=='net471'">
    <DefineConstants>NET471;</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)'=='net461'">
    <DefineConstants>NET461;</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(TargetFramework)'=='net452'">
    <DefineConstants>NET452;</DefineConstants>
  </PropertyGroup>

netstandard1.3;netstandard2.0;net452;net461;net471
真的
...
...
...
...
1.0.20
痕迹;调试;
网络标准2_0;
网络标准1_3;
NET471;
NET461;
NET452;

试试看。尽管存在许多重复的问题,但只创建一个包含两个项目的解决方案并尝试从另一个项目中引用一个会更快。在任何情况下,如果希望代码可重用,应该创建.NET标准库。一个完整或核心库将期望找到BCL类的完整或核心版本。标准库将使用可执行文件的运行时提供的类来使用dll的非核心应用程序。您需要使用.net标准和多目标dll,它将为您在包中指定的每种框架类型生成库。您不能,netcore程序集以框架桌面版本中不可用的运行时程序集为目标。这是一个完全不同的运行时,例如完全不同的CLR版本,从文档中不容易看到。以.netstandard为目标是一种逐渐切换的方式,但要注意,很多类将丢失..NET标准是以.NET核心和.NET框架为目标的好选择。目前这一点肯定是有限的,但正在改善。请查找兼容版本