【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 路径请按本机安装调整。

相关推荐
枕星而眠11 小时前
一篇吃透 C++ 核心基础:初始化、引用、指针、内联、重载、右值引用
开发语言·数据结构·c++·后端·visual studio
小龙报21 小时前
【C语言】内存里的 “数字变形记”:整数三码、大小端与浮点数存储真相
c语言·开发语言·c++·创业创新·学习方法·visual studio
无限进步_1 天前
【C++】从红黑树到 map 和 set:封装设计与迭代器实现
开发语言·数据结构·数据库·c++·windows·github·visual studio
还有几根头发呀1 天前
Cursor 接入 DeepSeek‑V4‑Pro 完整指南(2026 实测)
ai编程·cursor·deepseek‑v4‑pro
无限进步_1 天前
【C++】深入底层:自己动手实现一个哈希表
开发语言·数据结构·c++·算法·链表·散列表·visual studio
xxjkkjjkj2 天前
REF22222
visual studio
YuTaoShao2 天前
Cursor 的上下文工程新思路:把一切变成文件
ai·agent·cursor·上下文工程
八号当铺2 天前
从 Prompt 到 AI 工程化:理解 Rules、Skills 与 Agent
前端·ai编程·cursor