我们要推送的所有机器都是已安装 .net framework 的 Windows 机器。如果我们想要使用 .net core 的 dll 文件,那么我们需要安装 .net core 运行时,对吗?
谢谢...
我们要推送的所有机器都是已安装 .net framework 的 Windows 机器。如果我们想要使用 .net core 的 dll 文件,那么我们需要安装 .net core 运行时,对吗?
谢谢...
根据我正确理解微软的文档,看起来对于.NET 5/6,你的问题的答案是否定的。看起来你可以在.NET Framework中使用的最新版本是.NET Standard 2.0。
如果您正在构建可重用的库,计划在NuGet上发布,请考虑可达性和可用功能集之间的权衡。.NET Standard 2.0是.NET Framework支持的最新版本,因此它具有相当大的功能集和良好的可达性。我们不建议针对.NET Standard 1.x,因为这会限制可用功能集,而仅获得最小的可达性增加。如果您不需要支持.NET Framework,则可以选择.NET Standard 2.1或.NET 5/6。我们建议您跳过.NET Standard 2.1,直接使用.NET 6。大多数广泛使用的库将为.NET Standard 2.0和.NET 5+进行多目标定位。支持.NET Standard 2.0可以让您获得最广泛的可达性,而支持.NET 5+则确保您可以利用已经使用.NET 5+的客户端的最新平台功能。.NET Standard是一个正式的规范,定义了可在多个.NET实现上使用的.NET API。制定.NET Standard的动机是为了在.NET生态系统中建立更大的统一性。.NET 5及以后的版本采用了不同的方法来建立统一性,从而在大多数情况下消除了.NET Standard的需要。但是,如果您想在.NET Framework和任何其他.NET实现之间共享代码(例如.NET Core),则应将库目标设置为.NET Standard 2.0。不会发布.NET Standard的新版本,但.NET 5、.NET 6和所有未来版本将继续支持.NET Standard 2.1及更早版本。
<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>
回答
是的,除非.NET应用程序以自包含方式发布,否则需要.NET(.NET Core)。.NET(.NET Core)并不是为在.NET Framework上运行而设计的。
https://learn.microsoft.com/en-us/dotnet/core/introduction#deployment-models
https://dotnet.microsoft.com/en-us/download
附加的 .NET 兼容性信息
不同的 .NET 实现包括:
https://learn.microsoft.com/en-us/dotnet/fundamentals/implementations
针对特定实现的应用程序/动态链接库通常与其他实现不兼容:
https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-2-0#api-changes-and-library-support)