一、项目结构
SDK样式项目
新建一个WPF工程,对比.Net Framework和.Net Core的项目文件
在 .Net Framework的csproj文件中,可以看到记录了很多信息。
在 .Net Core的csproj中,只看到很少的记录信息。默认的设置已经不再显示了,如输出路径,平台等。
组件的引用已经默认包含在"Microsoft.NET.Sdk.WindowsDesktop"SDK中了。这种在项目文件中的 <Project> 元素中包含了SDK 属性的就称为SDK样式的项目文件(SDK-style projects)
Nuget包引用
创建一个.Net Framework WPF工程和.Net Core WPF工程,同时引用 BlurWindow和MongoDB.Driver包。可以看到
在.Net Framework中,Nuget包引用是通过packages.config文件来记录,且会在文件中列出每一个引用的组件
而在.Net Core中,是直接记录在项目工程文件(.csproj)里,并且是以包引用(PackageReference)的形式记录,更加简洁。
说明:
1、从Visual Studio 2017 Version 15.7版本开始,支持从packages.config转换到PackageReference
转换方法如下:
在packages.config上右键 ,选择【将 packages.config迁移到PackageReference】 。
转换完成后,packages.config文件被删除,引用的Nuget包会被记录在项目工程文件(.csproj)里。
当我们把WPF程序从.Net Framework迁移到.Net Core时,就需要进行以上操作。
2、.Net Core WPF项目工程文件(.csproj)中不再记录当前项目包含的文件。通过检测项目工程文件路径下的文件来进行自动添加。
代码访问安全性(CAS)
.NET Framework提供了一种机制,用于对在同一应用程序中运行的不同代码实施不同级别的信任,称为代码访问安全性(CAS)
在.Net Core中,不再支持Code Access Security(CAS)代码访问安全性功能。
这个功能平常用得少,这里不作详细介绍,可以在推荐阅读中找到介绍CAS的链接进行了解。
推荐阅读
docs.microsoft.com/en-us/dotne…
docs.microsoft.com/en-us/dotne…
docs.microsoft.com/en-us/dotne…
docs.microsoft.com/en-us/nuget…
docs.microsoft.com/en-us/nuget…
二、项目发布
1、部署模式:依赖框架;独立(推荐);
2、目标运行时。
3、生成单个文件。
4、ReadyToRun:AOT(ahead-of-time)、JIT。缺点看文档。
5、裁剪未使用的程序集。缺点看文档。
各个选项功能区别去翻看微软官方文档,都有详细介绍。
验证思路:
1、尝试把文件拷贝到另一台Windows(SandBox)中运行。
2、尝试把文件拷贝到一台Linux(用WSL)中运行。WSL中到/mnt目录下访问主机磁盘。Linux中执行可执行程序:./文件名。
3、WinForm/WPF(.NET Core)也可以用这个(Windows-only)。
本文部分参考:www.cnblogs.com/zhaotianff/… 感谢分享。