C#版本与NET版本对照

C#12.0 .NET8(2023)
C#11.0 .NET7(2022)
C#10.0 .NET6(2021)
C#9.0 .NET5(2020)
C#8.0 .NET Framework4.8(2019-04-18)
C#7.3 .NET Framework4.7.2

VS错误:找不到project.assets.json

工具->命令行->开发者命令提示->输入msbuild -t:restore

https://learn.microsoft.com/zh-cn/nuget/consume-packages/package-restore-troubleshooting


nuget清除缓存

清空资源管理器,删除生成目录000_exe文件夹,删除sln同级的packages文件夹,删除C盘用户目录中的.nuget文件夹,删除所有bin/obj文件夹

dotnet format -v d命令格式化

修改nuget_packages的缓存地址

nuget_packages默认缓存地址是 C:\Users\win\.nuget\packages,可能这个目录会有几十G

找到 C:\Users\win\AppData\Roaming\NuGet\NuGet.Config,一般存放在路径C:\Users\用户\AppData\Roaming\NuGet\NuGet.Config下,打开该文件,在configuration节点下添加如下配置即可

<config> 
    <add key="globalPackagesFolder" value="D:\Program Files\nuget_packages" />
</config>

修改本地包的默认位置

本地包默认位置:C:\Program Files (x86)\Microsoft SDKs\NuGetPackages,将其修改到D盘 D:\Program Files (x86)\Microsoft SDKs\NuGetPackages

两步操作:一是把所有的内容从C:\Program Files (x86)\Microsoft SDKs\NuGetPackages复制到D:\Program Files (x86)\Microsoft SDKs\NuGetPackages;二是修改C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config中的路径

用于解决在nuget包和自己的private包,之间存在同名库文件,用于指定每个包是来自全网nuget还是自己的私有库

包源映射

用于解决在nuget包和自己的private包,之间存在同名库文件,用于指定每个包是来自全网nuget还是自己的私有库

https://learn.microsoft.com/zh-cn/nuget/consume-packages/package-source-mapping

中央包管理

https://learn.microsoft.com/zh-cn/nuget/consume-packages/central-package-management

对解决方案右击->添加->新建项

 

使用dotnet-tocpm创建CPM

https://github.com/DEVDEER/dotnet-tocpm

dotnet tool install -g devdeer.tools.tocpm 安装这个插件
tocpm -h 检查是否安装好
tocpm simulate . 分析当前程序的包引用情况
tocpm execute . 生成Directory.Packages.props
y yes

 git大文件管理

https://git-lfs.com/


开发者PowerShell常用指令

dotnet list package

 新建gitignore

VS2022智能提示支持NET6的汉化

工具->命令行->开发者PowerShell

dotnet tool install -g islocalizer
islocalizer install auto -m net6.0 -l zh-cn
islocalizer build -m net6.0 -l zh-cn -cc OriginFirst -sl '---------'k

可以通过islocalizer -h查看更多的命令帮助

这种方式更新的C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.25\ref\net6.0下的xml,会增加两个“zh-cn”、“zh-hans”两个文件夹,但由于.NET 6引入了新的工作方式,使用了SDK-style项目文件和更灵活的NuGet包管理,需要将“zh-cn”、“zh-hans”两个文件夹从C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.25\ref\net6.0复制到C:\Users\win\.nuget\packages\microsoft.netcore.app.ref\6.0.27\ref\net6.0,后者的目录取决于下一张地址

右击文件夹可用VSCode打开

VSCode打开sln后代码区不染色

需要设置语言模式

Task.Wait()、Result和Task.GetAwaiter().GetResult()的区别

Task中遇到异常,前者会被包在AggregateException,后者是直接的异常;可以用于后者代替前者