突然之间,我在使用.Net核心项目的docker容器中安装的Launch.json和远程调试器通过VS Code进行远程调试时遇到了问题.

错误信息清楚地告诉了问题是什么,对我来说,与错误指向的文件相比,查看文件没有任何意义.(正在使用的本地文件btw看起来完全相同的内容作为主分支的文件在此链接:remoteProcessPickerScript)

以下是我在try 通过DotNet环境将VS代码的远程调试功能附加到Pod时收到的错误:

kubectl exec -i pod-name -- /bin/sh -c "sh -s" < "c:\...\.vscode\extensions\ms-dotnettools.csharp-2.10.28-win32-x64\scripts\remoteProcessPickerScript"
stderr: sh: 30: Syntax error: "}" unexpected (expecting "then")
command terminated with exit code 2

推荐答案

确保本地.vscode目录中的remoteProcessPickerScript与GitHub存储库主分支中的remoteProcessPickerScript完全匹配.任何偏差都可能导致语法错误.

# Compare local script with the remote one
diff "c:\...\.vscode\extensions\ms-dotnettools.csharp-2.10.28-win32-x64\scripts\remoteProcessPickerScript" "path/to/downloaded/script/from/github"

该脚本可能是为特定的shell (如bash)编写的,但它正由另一个shell (如sh)解释.确保脚本的shebang行(如果有)与容器中使用的shell 匹配.

如果您使用的是Windows计算机,则脚本中的行尾可能是CRLF,而不是Unix样式的LF.这可能会在Unix环境中引发问题.

# Convert CRLF to LF
dos2unix "c:\...\.vscode\extensions\ms-dotnettools.csharp-2.10.28-win32-x64\scripts\remoteProcessPickerScript"

此外,如果脚本中有特殊字符,则在通过kubectl exec时可能需要对它们进行不同的转义.

为了进行测试,try 直接在容器的shell 中运行该脚本

kubectl exec -i pod-name -- /bin/bash -c "cat > script.sh" < "c:\...\.vscode\extensions\ms-dotnettools.csharp-2.10.28-win32-x64\scripts\remoteProcessPickerScript"
kubectl exec -it pod-name -- /bin/bash -c "./script.sh"

Csharp相关问答推荐

如何使用Automapper映射两个嵌套列表

错误NU 1301:无法加载源的服务索引

使用C#中的Shape API从Azure目录获取所有用户

EF Core 8—应用客户端投影后无法转换集操作

有没有办法把+02:00转换成TimeSpan?""

WPF Windows初始化正在锁定. Net 8中分离的线程

S能够用DATETIME来计算,这有什么错呢?

将现有字段映射到EFCore中的复杂类型

获取具有AutoFaces的所有IOptions对象的集合

持有者安全定义未显示在Swagger.NET 8中

为基本审计设置Audit.EntityFramework.Core

如何在C#中将方法/线程启动传递给基本构造函数

用C#从XML内部元素中获取特定值

JsonPath在Newtonsoft.Json';S实现中的赋值

EF Core:如何对关系属性进行建模?

我应该为C#12中的主构造函数参数创建私有属性吗?

如何在C#控制台应用程序中获取用户输入并将其作为订单项目进行处理?

在C#和HttpClient中使用REST API

使用免费的DotNet库从Azure函数向Azure文件共享上的现有Excel文件追加行

我是否以错误的方式使用了异步延迟初始化?