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

VS Code运行C#报Unable to copy obj/file MSB3027错误如何解决

问题描述

我的代码示例如下:

internal class NewBaseType
{
    private static void Main(string[] args)
    {
        Console.WriteLine("enter first word");
        string v = Console.ReadLine();

        Console.WriteLine("enter second word");
        string w = Console.ReadLine();
        Console.WriteLine("Result: "
            + v
            + " "
            + w);
    }
}

这段代码在各类在线C#运行平台中都可以正常执行。

但在Visual Studio Code中运行时出现如下错误:
错误截图

Unable to copy obj
Unable to copy file

编译错误详情:

[{
    "resource": "/c:/Program Files/dotnet/sdk/6.0.300/Microsoft.Common.CurrentVersion.targets",
    "owner": "msCompile",
    "code": "MSB3027",
    "severity": 8,
    "message": "Could not copy \"obj",
    "startLineNumber": 4632,
    "startColumn": 5,
    "endLineNumber": 4632,
    "endColumn": 5
}]

尝试运行代码时还会弹出如下提示:
运行提示截图

Errors exists after running preLaunchTask 'build'
Debug Anyway / Show errors / Abort


故障原因与修复方案

MSB3027错误的核心原因是生成过程中无法将obj目录下的中间编译文件复制到输出路径,按优先级尝试以下修复方案即可:

  • 残留进程锁文件:上一次调试启动的dotnet进程没有正常退出,持续占用编译生成的文件。打开任务管理器,找到所有名为dotnet的进程全部结束,重新运行项目即可。
  • 目录权限不足:如果项目存放在C盘根目录、Program Files等系统受保护路径下,dotnet没有足够写入权限会触发该错误。将整个项目文件夹移动到当前用户的桌面、文档等拥有完全读写权限的目录,重新打开后运行。
  • 编译缓存损坏:关闭VS Code,手动删除项目根目录下的bin和obj两个缓存文件夹,重新打开VS Code后会自动重新生成所需的缓存文件。
  • 安全软件锁定:部分杀毒软件、系统防护工具会在编译生成exe/dll后立刻扫描文件,短时间内锁定文件导致复制失败,可以将项目目录加入安全软件的信任白名单。
  • 扩展版本兼容问题:如果上述方案都无效,检查VS Code的C#扩展是否为最新版本,旧版本OmniSharp组件存在偶发的文件锁兼容bug,更新扩展后重启VS Code即可。

内容的提问来源于stack exchange,提问作者Mykhaylo Petyakh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:42:27