AY 学 .NET Core3.X 笔记 1 -大致一览

我对着 msdn 看的

1. Hello World

打开cmd

dotnet new console -o d://core/helloworld

运行 C:\Users\admin>dotnet run --project d://core/helloworld

创建mvc的web

dotnet new mvc -o mymvc      创建一个MVC项目,名称为mymvc

dotnet restore                           还原项目引用包

dotnet build                              编译项目

dotnet run                                 运行项目

产品贡献应该在一个项目存储库上进行,例如  dotnet/runtimedotnet/sdkdotnet/rosyln 或  aspnetcore   有关详细信息,请参阅  .NET Core 存储库

.NET Core 3.0 已实现 .NET Standard 2.1 。 但是,默认的 dotnet new classlib 模板还是会生成一个面向 .NET Standard 2.0 的项目 。 若要面向 .NET Standard 2.1,请编辑项目文件并将 TargetFramework 属性更改为 netstandard2.1:

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

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>

</Project>

如果使用 Visual Studio,则需要 Visual Studio 2019,这是因为 Visual Studio 2017 不支持 .NET Standard 2.1 或 .NET Core 3.0 

core3.0的时候

在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件(即 appHost) 。 和其他本机可执行文件一样,可以使用这些可执行文件执行相同操作,例如:

可以双击可执行文件。

可以直接从命令提示符启用应用程序,如 Windows 上的 myapp.exe,以及 Linux 和 macOS 上的 ./myapp

在core3.1里面: 查看

3.1里面,还有就是对桌面程序的部分控件 改名字

其他对比看  https://docs.microsoft.com/zh-cn/dotnet/core/compatibility/3.0-3.1

这里影响不大

dotnet publish 命令支持将应用打包为特定于平台的单文件可执行文件

设置

dotnet publish -r win10-x64 -p :PublishSingleFile= true

或者修改xml

< PropertyGroup >   < RuntimeIdentifier > win10-x64 </ RuntimeIdentifier >   < PublishSingleFile > true </ PublishSingleFile >

</ PropertyGroup >

.NET core 3.0 SDK 随附了一种工具,可以通过分析 IL 并剪裁未使用的程序集来减小应用的大小。就是release发布

<PropertyGroup>

<PublishTrimmed>true</PublishTrimmed>

</PropertyGroup>

.NET Core CLI

dotnet publish -r <rid> -c Release

当然你有反射,动态代理啥的,遇到问题,可以不用这个配置

NET Core 3.0 中默认启用了分层编译 (TC)。 此功能使运行时能够更适应地使用实时 (JIT) 编译器来实现更好的性能。

启用 TC 后,以下行为适用于应用启动时的方法编译:

如果方法具有预先编译的代码 (ReadyToRun),将使用预生成的代码。

否则,将实时编译该方法。 一般来说,这些方法是泛型而不是值类型。

快速 JIT 可以更快地生成较低质量(优化程度较低)的代码。 在 .NET Core 3.0 中,默认为不包含循环的方法启用了快速 JIT,并且启动过程中首选快速 JIT。

完全优化的 JIT 可生成更高质量(优化程度更高)的代码,但速度更慢。 对于不使用快速 JIT 的方法(例如,如果该方法具有 MethodImplOptions.AggressiveOptimization 特性),则使用完全优化的 JIT。

<PropertyGroup>

<TieredCompilationQuickJit>false</TieredCompilationQuickJit>

</PropertyGroup>

若要完全禁用 TC,请在项目文件中使用此 MSBuild 属性:

XML

<PropertyGroup>

<TieredCompilation>false</TieredCompilation>

</PropertyGroup>

ReadyToRun 映像

可以通过将应用程序集编译为 ReadyToRun (R2R) 格式来改进.NET Core 应用程序的启动时间。 R2R 是一种预先 (AOT) 编译形式。

向项目中添加 <PublishReadyToRun> 设置:

XML

<PropertyGroup>

<PublishReadyToRun>true</PublishReadyToRun>

</PropertyGroup>

发布自包含应用。 例如,此命令将创建适用于 Windows 64 位版本的自包含应用:

.NET Core CLI

复制

dotnet publish -c Release -r win-x64 --self-contained

编译限制

跨平台/体系结构限制

ReadyToRun 编译器当前不支持跨目标。 必须在给定的目标上编译。 例如,如果想要 Windows x64 R2R 映像,需要在该环境中运行发布命令。

跨目标的例外情况:

可以使用 Windows x64 编译 Windows ARM32、ARM64 和 x86 映像。

可以使用 Windows x86 编译 Windows ARM32 映像。

可以使用 Linux x64 编译 Linux ARM32 和 ARM64 映像。

回滚版本

.NET Core 3.0 引入了一项选择加入功能,该功能允许应用前滚到 .NET Core 最新的主要版本。

项目文件属性:RollForward

运行时配置文件属性:rollForward

环境变量:DOTNET_ROLL_FORWARD

命令行参数:--roll-forward

必须指定以下值之一。 如果省略该设置,则默认值为“Minor” 。

LatestPatch

前滚到最高补丁版本。 这会禁用次要版本前滚。

Minor

如果缺少所请求的次要版本,则前滚到最低的较高次要版本。 如果存在所请求的次要版本,则使用 LatestPatch 策略。

Major

如果缺少所请求的主要版本,则前滚到最低的较高主要版本和最低的次要版本。 如果存在所请求的主要版本,则使用 Minor 策略。

LatestMinor

即使存在所请求的次要版本,仍前滚到最高次要版本。 适用于组件托管方案。

LatestMajor

即使存在所请求的主要版本,仍前滚到最高主要版本和最高次要版本。 适用于组件托管方案。

Disable

不前滚。 仅绑定到指定的版本。 建议不要将此策略用于一般用途,因为它会禁用前滚到最新补丁的功能。 该值仅建议用于测试。

除“Disable”设置外,所有设置都将使用可用的最高补丁版本 。

发现个wpf的core3版本的,可以用uwp的控件和fluentui

https://docs.microsoft.com/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost

还有

https://docs.microsoft.com/zh-cn/windows/apps/desktop/modernize/xaml-islands

还有winform的高dpi设置

Windows 提供丰富的本机 API,包括平面 C API、COM 和 WinRT 的形式。 .NET Core 支持 P/Invoke, .NET Core 3.0 则增加了 CoCreate COM API 和 Activate WinRT API 的功能。

TLS1.3 的支持,目前window的不支持

AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);

推荐您阅读更多有关于“”的文章

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章