5 .NET 5项目结构及发布

232 阅读2分钟

一、项目结构

SDK样式项目

新建一个WPF工程,对比.Net Framework和.Net Core的项目文件

.Net Frameworkcsproj文件中,可以看到记录了很多信息。

.Net Corecsproj中,只看到很少的记录信息。默认的设置已经不再显示了,如输出路径,平台等。

组件的引用已经默认包含在"Microsoft.NET.Sdk.WindowsDesktop"SDK中了。这种在项目文件中的 <Project> 元素中包含了SDK 属性的就称为SDK样式的项目文件(SDK-style projects)

 

 

 

Nuget包引用

创建一个.Net Framework WPF工程和.Net Core WPF工程,同时引用 BlurWindowMongoDB.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…

二、项目发布

image.png

image.png

image.png

image.png

1、部署模式:依赖框架;独立(推荐);

image.png

2、目标运行时。

image.png

3、生成单个文件。

4、ReadyToRun:AOT(ahead-of-time)、JIT。缺点看文档。

5、裁剪未使用的程序集。缺点看文档。

image.png

各个选项功能区别去翻看微软官方文档,都有详细介绍。

验证思路:

1、尝试把文件拷贝到另一台Windows(SandBox)中运行。

2、尝试把文件拷贝到一台Linux(用WSL)中运行。WSL中到/mnt目录下访问主机磁盘。Linux中执行可执行程序:./文件名。

3、WinForm/WPF(.NET Core)也可以用这个(Windows-only)。

本文部分参考:www.cnblogs.com/zhaotianff/… 感谢分享。