【Cursor】添加规则:不用 `dotnet build`:一条规则走 Visual Studio 链路

不用 dotnet build:一条规则走 Visual Studio 链路

背景:同样的代码,为什么 VS 能编、命令行不行?

不少公司电脑装了透明加密、防泄密或终端管控软件。表现往往是:

  • Visual Studio 里点「生成」或按 F5 调试,一切正常;
  • 在 PowerShell / Cursor 终端里跑 dotnet build,却随机报错:访问被拒绝、文件被占用、超时、复制失败等。

这通常不是项目坏了,而是策略按进程、父进程或写盘路径 区分对待:dotnet.exe 拉起的构建链不在白名单 里,而 devenv.exe、VS 调起的 MSBuild 被放行。路径上若还叠加网络盘、同步目录,CLI 与 VS 使用的临时目录不一致,差异会更明显。

只要确认「VS 能稳定生成」,就可以把「验证编译」这件事也改走同一条工具链 ,避免 AI 或脚本习惯性调用 dotnet


思路:用 Cursor 规则把偏好固定下来

Cursor Rules 会在对话里给模型持久化的指令。我们要写的是:

  • 不要 在默认流程里用 dotnet build / dotnet test / dotnet run 做验证(除非用户点名或环境根本没有 VS);
  • devenv.com 编解决方案 ,或 MSBuild.exe 编单个项目,路径与配置和本机 Visual Studio 安装一致。

这样无论是你自己敲命令,还是 Agent 在终端里替你跑编译,都会优先走「和 VS 一致」的方式,减少被加密软件拦截的概率。


规则正文(可直接用于 User Rules 或 .mdc

下面这段是规则的核心说明;若用 项目规则带 frontmatter 的 .mdc 文件,可在文件开头加上 YAML(见下一节)。

说明性正文(适合粘贴到 Cursor → Settings → Rules → User Rules):

本机企业加密软件会拦截 dotnet build / dotnet test / dotnet run,Visual Studio 生成正常。在终端做编译或验证时:不要用 dotnet CLI 作为默认方式;优先用 devenv.com.sln,或用 C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe.csproj(配置名与 sln 一致,如 Debug|Any CPU);需要还原时对同一 sln/csproj 先 MSBuild -t:Restore 再 Build。若无 VS(仅 Linux/macOS/SDK)再用 dotnet。

带元数据的 .mdc 示例(适合放在 .cursor/rules/ 或用户目录下的规则文件夹):

markdown 复制代码
---
description: Windows 本机勿用 dotnet CLI 做编译验证;改用 devenv.com 或 VS 自带 MSBuild
alwaysApply: true
---

# .NET 编译与验证(本机 Windows)

本机企业加密/管控软件常拦截 **dotnet build、dotnet test、dotnet run** 等 CLI,而 **Visual Studio 内生成正常**。

在需要通过**终端编译或验证**时:

1. **不要**默认使用 dotnet CLI(除非用户明确要求,或项目文档/CI 明确仅支持 CLI 且当前环境无 VS)。
2. **优先使用**与 VS 一致的链路:
   - **整个解决方案**:  
     `devenv.com` + `.sln` + `/Build "Debug|Any CPU"`(路径按本机 VS 版本填写 Community / Professional / Enterprise)。
   - **单个 .csproj**:  
     VS 安装目录下 `MSBuild\Current\Bin\MSBuild.exe`,并传入 `-p:Configuration=Debug -p:Platform="Any CPU"`;需还原时先 `-t:Restore`,再 `-t:Build`。
3. 配置字符串须与解决方案里一致;Release 用 `Release|Any CPU`。
4. 若当前为 Linux/macOS 或仅有 SDK、无 VS,再改用 dotnet CLI。

alwaysApply: true 设为「始终应用」,可避免模型在「验证一下编过没有」时又回到 dotnet build


命令示例(PowerShell)

整解决方案生成(控制台输出用 devenv.com):

powershell 复制代码
& "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.com" "D:\path\YourSolution.sln" /Build "Debug|Any CPU"

单个项目:

powershell 复制代码
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" "D:\path\YourProject.csproj" -p:Configuration=Debug -p:Platform="Any CPU"

在解决方案里只编某一个项目(/Project 为 sln 中的项目显示名):

powershell 复制代码
& "...\devenv.com" "D:\path\YourSolution.sln" /Build "Debug|Any CPU" /Project YourProjectName

VS 版本或 SKU 不同,只需替换 Community 以及盘符路径即可。


规则放在哪里:项目级 vs 用户级

方式 作用范围 说明
Cursor Settings → Rules → User Rules 本机所有仓库 官方推荐的「全局」入口,内容存在应用数据中。
仓库内 .cursor/rules/*.mdc 当前仓库 可版本管理,团队共享;适合写成团队规范。
用户目录下的 .cursor/rules/*.mdc 视 Cursor 版本而定 便于备份与同机多仓库共用;若发现未生效,请以 User Rules 为准再贴一份。

本项目作者曾在本机使用:C:\Users\宋恒\.cursor\rules\dotnet-build-vs-toolchain.mdc,与上表规则内容一致。


例外与边界

  • CI / Linux 容器 / 无 VS 的环境 :仍应使用 dotnet,规则里已写明「无 VS 再用 CLI」。
  • 加密策略若按目录拦截 :仅换进程仍可能失败,需要 IT 对工程目录、obj/bin、临时目录做策略调整。
  • User Rules 与 Inline Edit :按 Cursor 文档,User Rules 主要作用于 Agent(聊天),不作用于所有 AI 功能;若某场景仍出现 dotnet,可在该次对话里口头强调或 @ 引用规则文件。

小结

「VS 能编、dotnet build 不行」在很多企业环境下是策略差异 而不是代码问题。把编译验证 写进 Cursor 规则、固定为 devenv / MSBuild 路径,可以让日常开发和 AI 辅助构建都更稳。若你希望规则对全仓库、全团队生效,把 .mdc 放进各项目的 .cursor/rules/ 并提交到 Git,是比单机 User Rules 更长久的做法。


本文基于实际环境整理,命令中的 VS 路径请按本机安装调整。

相关推荐
小凡同志4 小时前
Cursor 和 Claude Code:AI 编程的两种哲学
人工智能·claude·cursor
万兴丶5 小时前
Unity 用AI自动开发游戏近一年----最新Cursor使用心得
人工智能·游戏·unity·cursor
计算机安禾5 小时前
【数据结构与算法】第8篇:线性表(四):双向链表与循环链表
c语言·开发语言·数据结构·c++·算法·链表·visual studio
计算机安禾1 天前
【数据结构与算法】第6篇:线性表(二):单链表的实现(头插法、尾插法)
c语言·数据结构·学习·算法·链表·visual studio code·visual studio
计算机安禾1 天前
【数据结构与算法】第5篇:线性表(一):顺序表(ArrayList)的实现与应用
c语言·开发语言·数据结构·c++·算法·visual studio code·visual studio
AI精钢1 天前
在生产环境进行 vibe coding 的正确方式
大数据·人工智能·ai·agent·claude·devops·cursor
Jiude1 天前
Skill + MCP + Linear 自动化工作流:让 AI 包揽变更日志工作
前端·架构·cursor
计算机安禾2 天前
【数据结构与算法】第3篇:C语言核心机制回顾(二):动态内存管理与typedef
c语言·开发语言·数据结构·c++·算法·链表·visual studio
m0_716765232 天前
C++提高编程--STL初识、string容器详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio