惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
Martin Fowler
Martin Fowler
H
Help Net Security
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 最新话题
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
AI
AI
The Hacker News
The Hacker News
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
SecWiki News
SecWiki News
C
Check Point Blog
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
Attack and Defense Labs
Attack and Defense Labs
Security Latest
Security Latest
Help Net Security
Help Net Security
博客园 - Franky
L
LINUX DO - 热门话题
N
News and Events Feed by Topic
Cloudbric
Cloudbric
P
Proofpoint News Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 【当耐特】
Schneier on Security
Schneier on Security
Google Online Security Blog
Google Online Security Blog
C
Cisco Blogs
Webroot Blog
Webroot Blog
C
CERT Recently Published Vulnerability Notes
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
O
OpenAI News
T
Threat Research - Cisco Blogs
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Last Watchdog
The Last Watchdog

.NET

.net framework 项目新样式 数据库迁移报错 - V2EX 知乎网友:“VS2026 还是跑在 .NET Framework 4.8 上,看来 .NET LTS 只有三年的问题还真把微软自己的脖子卡住了” - V2EX .Net 有没有类似若依这种后台框架? - V2EX 请教个 .NET Framework 4.0 升级以运行在 arm 上的问题 - V2EX 应届生刚入职,做的是 wms+mes+mes 二次开发,因为没学过.net+c#,现在接口代码全靠 ai 写怎么办 - V2EX [分享创造] 开源轻量级 WinForm 壁纸切换器 Wallpaper Switcher (C# / .NET 9) - V2EX csharp 这回真成了脚本语言: dotnet run app.cs - V2EX 小弟写了一个 ETLBox 写入数据到 ClickHouse 的组件, 需要用到的兄弟们可以看看 - V2EX C#.net9wpf 项目这份.gitignore 规则可行吗?还有什么可以添加的吗? - V2EX 有人试过从 WCF 迁移到 ASP.NET Core Web API 吗? - V2EX 项目从.NET5.0 升级到 8.0,加起来 1.5 万行代码, Linux 下编译经常要半个小时,有的时候又几秒钟就能编译完, Windows 下一直非常正常,怎么排查? - V2EX 分享一个使用 C#封装的 gRPC 组件 - V2EX C# .NET 现在相对成熟的跨平台 UI 框架是否还是只有 Avalonia? MAUI 怎么样了 - V2EX ASP .NET Core + EF Core + MySQL 这个统计查询在 3 亿条记录的表下每次查询都需要 2~4 分钟,优化的办法只有用触发器或是后台每小时定期统计吗? - V2EX Avalonia UI 更新到 11 以后启动慢有办法优化吗? - V2EX EF Core 这类较重的 ORM 框架适合塞进客户端吗?如果是用于本地 SQLite 数据库,有没有更好的选择? - V2EX Windows 普通用户,可否禁用系统自带.net 3.5/4.8,仅安装最新.net 8/9? - V2EX 同一程序内的消息队列,这样用单例的简易实现比 redis 的 Pub-Sub 效率高吗?如果不实现 Unsubscribe,有内存泄漏风险吗? - V2EX Avalonia 11 后要从 ItemsControl 调用母 UserControl 的命令这种常见操作就必须每次都写这么长一坨东西吗? - V2EX .NET build 到 wasm 后怎么看错误代码在哪个 .cs 文件的哪个位置? DevTools 和那个 Debug URL 里都只能看到 e.Message - V2EX macOS 单用户环境 dotnet 装在 ~/.dotnet/ 还是 /usr/local/share/dotnet/ 更好? Rider 默认是前者,官网下载的 .pkg 默认是后者 - V2EX efcore 中, 使用 FromSql 查询时, 如何设置 where in 参数? - V2EX 有没有 .NET 大神帮忙看看困扰了好几个大神一年的内存泄露问题,优化了一年越变越严重,现在一小时崩一次 - V2EX 有用过 SQLSugar 的吗?能说说体验吗? - V2EX .NET 大牛们,这次遇到了一个涉及知识盲区的 BUG,与 Redis 有关 - V2EX 求助大佬们,干了件蠢事,我都不理解我为什么要用 Rider 去装 SDK,导致现在删不掉也找不到了 - V2EX nuget 服务器有问题了,不会也是那个 CrowdStrike 出问题导致的吧 - V2EX 为什么我已经在 Visual Studio 中安装了.Net 8.0,但是命令行显示的版本仍然是 6.0.31? - V2EX 我使用 vscode,如何平稳的将.Net7.0 升级到.Net8.0? - V2EX 我想重构我这个项目的前端,有什么好的建议? - V2EX 接了个小活,选 Windows 窗体应用还是 WPF 应用? - V2EX AlipaySDKNet.OpenAPI 这个包没多少代码,为什么大小是 14.1MB?里面塞了什么? - V2EX EF Core 不引入锁,高并发场景 ExecuteSqlRawAsync("UPDATE Users SET Balance = Balance + {0} WHERE UserId = {1}");后如何获取 Updated 后的值? - V2EX ASP .NET Core 5 内存占用线性增加, 1 小时内 100%把 128G 内存用完,如果运行 dotnet-gcdump 则能立即恢复正常水平,查了很多文档 gcdump 都是不会去触发 GC 的,但多次尝试都成功,求排查思路 - V2EX 为什么很多文章/工具都是针对.NET Core >3.1 而不是 3.0 的?这个个小版本改动非常大吗? - V2EX ASP.NET Core 在 Linux 下部分接口耗时长、并发性能差,除了逐步打印日志,还有什么方便、直观的办法查出是哪一步耗时长吗? - V2EX 时隔半年,我又来吐槽 nuget 了 - V2EX .NET 程序员的迷茫 - V2EX vs2022 win10 关机后再开机如何恢复 - V2EX Avalonia 现在还是灵车吗?连官网文档都能出这么多 bug - V2EX MAUI 在 macOS 上有办法实现关闭窗口后不退出吗? - V2EX ClosedXML 有办法简单实现把 HTML 保留所有颜色和图片插入到一个单元格吗? 我想到的办法是用 AngleSharp 解析,但改了好几个版本效果还是很差 - V2EX 求助(附日志)ASP.NET Core 部署在 Ubuntu 22.04 8 核 32G 阿里云下每月固定出现一次服务器失联情况,具体时间随机,失联后系统盘 IO 爆表,重启可解决,应该从哪里开始排查?完全没思路,附日志 - V2EX 求助 C#有办法在自己程序内部实现一个跨线程的简易消息队列吗?现在这种轮询数据库的实现 CPU 占用率很高, 4C8G 阿 里 云占用一直在 100% - V2EX 请教一下 asp.net core 技术问题 - V2EX .NET 8 发布正式版了 - V2EX .net 的库作者是不是都在向 js 看齐? - V2EX .net 刚通电没有触发怎么用软件主动获取红外传感器的信号。 - V2EX 看来 Windows Forms 依然活的好好的 - V2EX
visual studio code for .NET - V2EX
gopher666 · 2024-03-11 · via .NET

2023 年我自己职业生涯中有个较大的变化,疫情结束之后,我来到了二线城市,花了好久才找到一份.NET 的工作。 入职面试的时候,面试官跟我提到了公司内.NET 后端的开发工具要转到 vscode 。

开始尝试

开始使用的时候用 c# for vscode,VSCode-solution-explorer,nuget package manager,C# XML Documentation Comments 等插件配合起来开发 dotnet6. 后来微软推出的 c# for vscode + c# dev kit 不断的升级,基本上取代了之前用的那些插件。 visual studio for MAC 上,微软后期也不在继续更新,这就意味着其他平台上.NET 开发工具的主力就会是 vscode 。 开始使用的时候先尝试了直接使用 dotnet cli 的一些基本命令,来管理项目和解决方案。

dotnet new sln -o solution // 新建解决方案
dotnet new list //列出 templates
dotnet new console -n conApp // 新建一个控制台程序
dotnet new classlib -n Lib -f net6.0  // 新建类库
dotnet sln add .\Lib\Lib.csproj 加入到解决方案

dotnet nuget

dotnet nuget list source 
dotnet nuget add source 添加源
dotnet nuget remove source 
dotnet disable source 
dotnet enable source

当然我们经常用过命令来管理项目确实有写麻烦。 c# kit dev 给 dotnet 开发者提供了 solution explorer 。

Change Cursor Style and Animation in VS Code

"editor.cursorBlinking": "smooth"

Unit test

目前 c# dev kit 还有一些存在的问题待修复。 比如我常用到 xunit 框架用来输出日志的 output ,还无法输出到控制台,无法看到自己打印的信息。 相关 issue. No output recorded after unit testing using xUnit 为了对代码进行测试覆盖,需要安装几个插件 首先代码中需要引入 Coverlet

dotnet add package coverlet.collector

xunit 项目中使用

 dotnet test --collect:"XPlat Code Coverage" 

这个命令可以配置过滤条件排除一些不想被统计的代码参考文档 需要添加一个配置文件 coverlet.runsettings

<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="XPlat code coverage">
        <Configuration>
          <Format>json,cobertura,lcov,teamcity,opencover</Format>          
          <Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*</Exclude> <!-- [Assembly-Filter]Type-Filter -->
          <Include>[coverlet.*]*,[*]Coverlet.Core*</Include> <!-- [Assembly-Filter]Type-Filter -->
          <ExcludeByAttribute>Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute>
          <ExcludeByFile>**/dir1/class1.cs,**/dir2/*.cs,**/dir3/**/*.cs,</ExcludeByFile> <!-- Globbing filter -->
          <IncludeDirectory>../dir1/,../dir2/,</IncludeDirectory>
          <SingleHit>false</SingleHit>
          <UseSourceLink>true</UseSourceLink>
          <IncludeTestAssembly>true</IncludeTestAssembly>
          <SkipAutoProps>true</SkipAutoProps>
          <DeterministicReport>false</DeterministicReport>
          <ExcludeAssembliesWithoutSources>MissingAll,MissingAny,None</ExcludeAssembliesWithoutSources>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/VSTestIntegration.md 为了在 vscode 中可以展示对应文件的代码覆盖率,可以使用这个插件 Coverage Gutters https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters 为了生成对那个的代码测试报告,可以安装 RepotGenerator

Run multiple dotnet project at once

** tasks.json **

[
    {
            "command": "dotnet",
            "args": [
                "build",
                "${workspaceFolder}\\xxx.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile",
            "type": "process",
            "label": "dotnet: build APIGateway4"
    }
]

** launch.json **

[{
            "name": ".NET8 Launch (APIGateway4)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "dotnet: build APIGateway4",
            "program": "${workspaceFolder}\\APIGateway4.exe",
            "args": [],
            "cwd": "${workspaceFolder}\\src\\APIGateway\\APIGateway4",
            "stopAtEntry": false,
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "\\bNow listening on:\\s+( https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
 }],
 "compounds": [
        {
            "name": ".NET8 Launch (ALL API Gateway)",
            "configurations": [
                ".NET8 Launch (APIGateway)",
                ".NET8 Launch (APIGateway2)"
            ],
            "stopAll": false
        }
    ]

Add bracket pair colorization to your settings.json

 "editor.guides.bracketPairs": "active",
 "editor.bracketPairColorization.enabled": true,

集成 cmder

按 Ctrl + , 打开 VS Code setting ,搜索 terminal profiles windows,或者 ctrl + shift +p 打开 vs code Command Pallet 搜索 编辑 settings.json

   "terminal.integrated.defaultProfile.windows": "Cmder",

    "terminal.integrated.profiles.windows": {
        "Cmder": {
            "name": "Cmder",
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": ["/k", "${env:cmder_root}\\vendor\\bin\\vscode_init.cmd"],
            "icon": "terminal-cmd",
            "color": "terminal.ansiGreen"
        },
    },

需要提前配置一下环境变量 CMDER_ROOT 指向 Cmder 的安装目录

Hot keys

  • ctrl + , : 搜索文件或函数或变量 或者 编辑->定位到 注意:, 对应 < 那个按键上的
  • c ,c 逗号,而不是"那个键的逗号
  • cctrl + g : 定位到行 或者 编辑->转到
  • cctrl + - : 返回到上一次光标浏览 注意:- 号不是小键(数字)盘上的那个键
  • cctrl + + : 返回到后一次光标浏览 注意:+ 号不是小键(数字)盘上的那个键
  • cctrl + c :复制光标所在行 注意:只需要光标在这一行,不需要选中整行
  • cctrl + x : 剪切光标所在行 注意:只需将光标移至该行,不需要选中整行
  • cctrl + l(注意是 L 键) : 删除光标所在行 注意:只需将光标移至该行,不需要选中整行
  • cctrl + k + c :注释所选代码或光标所在行 注意:先按 k,再按 c 或者 ctrl+k,ctrl+c
  • cctrl + k + u:取消注释所选代码或光标所在行 注意:先按 k,再按 u 或者 ctrl+k,ctrl+u
  • cctrl + f:在本文件中查找
  • cctrl + h :在本文件中替换
  • cf2: 转到定义 , 如想查找 Connect 函数在哪里定义,可以双击选中,然后 f12
  • cshift + f12 : 查找所有引用 。如想查找 Connect 函数在哪些地方调用了,可以选中 Connect ,然后 shift+f12
  • cf5 : 开始运行 或者 开始调试

Quick fix 失效了

quick fix 按 ctrl + . 失效了,可以尝试修改成其他的快捷键 shift + ctrl + p 输入 Open Keyboard Shortcuts search quick fix 比如修改成 ctrl + shift + .

体会

总体感觉 vscode ,在微软更新了 c# + c# dev kit 之后,写 dotnet 的代码体验越来越好,给我的感觉是轻量和可定制化,希望 vscode for dotnet 越来越好。 ** 那么你有没有在使用 vscode 来开发 dotnet 呢? 可以与我一起讨论这个话题 **