You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止C#中执行dotnet build时自动生成.sln文件?

问题原因与解决方法

原因分析

  1. 自动生成sln的触发逻辑:当你在包含多个项目文件的目录,或是在项目目录的上级目录中执行dotnet build并指定单个csproj文件时,如果当前工作目录里没有解决方案文件(.sln),dotnet CLI会自动生成一个与当前工作目录同名的sln文件,把指定的csproj纳入其中作为临时构建载体。比如你在名为foo的项目目录下(目录内还有其他csproj文件)执行dotnet build foo.csproj,CLI找不到对应sln,就会生成foo.sln。
  2. 构建冲突的触发:当目录中同时存在sln和csproj文件时,若你执行不带参数的dotnet build,CLI无法自动判断你要构建解决方案还是单个项目,因此抛出“无法选择”的错误。

解决方法

  • 明确指定构建目标:每次执行构建时,直接指定要构建的文件,比如dotnet build foo.csproj或dotnet build foo.sln,让CLI明确知道构建对象,避免冲突。
  • 删除自动生成的sln:如果不需要这个自动生成的解决方案文件,直接删除即可。之后只要你执行dotnet build foo.csproj(明确指定项目文件),就不会再触发自动生成sln的逻辑。
  • 手动创建规范的sln:如果需要用解决方案管理项目,手动创建对应sln并添加项目:
    dotnet new sln -n foo
    dotnet sln add foo.csproj
    
    之后CLI会优先使用你手动创建的sln,不会再自动生成临时文件。
  • 避免无参数执行build:在包含多个项目或sln的目录下,永远不要直接执行不带参数的dotnet build,必须指定具体的构建目标文件。

内容的提问来源于stack exchange,提问作者James McGlashan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:27:38