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

相关推荐
nuIl12 小时前
实现一个 Coding Agent(7):Skills
前端·agent·cursor
nuIl13 小时前
实现一个 Coding Agent(8):会话持久化与多会话
前端·agent·cursor
王小二AI5 天前
baoyu-skills 实战:22 个 AI 技能,从采集到发布一句话搞定
ai编程·cursor
乘风gg5 天前
手把手带你实践历时一年总结的 AI Code Review 最佳工作流!
前端·ai编程·cursor
我不是懒洋洋5 天前
【C++】string(string的成员变量、auto和范围for、string常用接口的说明、OJ题目、string的模拟实现)
c语言·开发语言·c++·visual studio
C++ 老炮儿的技术栈5 天前
Ubuntu root账号自动登陆
linux·运维·服务器·c语言·c++·ubuntu·visual studio
A.零点6 天前
【2个月 C 语言从入门到精通:零基础系统教程】第十二讲:深入了解指针(五)
c语言·开发语言·网络·笔记·visual studio
彷徨而立6 天前
【VS2026】介绍 Visual Studio 几个重要配置项
visual studio
AndyHuang19766 天前
【避坑指南】Visual Studio 插件报错 “Windows Terminal (wt.exe) was not found in PATH“ 完美解决
ide·windows·visual studio
彷徨而立6 天前
【Visual Studio】msbuild 使用举例
ide·visual studio