小编Kev*_*ewa的帖子

防止在 .NET 上构建路径中的反斜杠以进行跨平台部署

我有一个旧版 .NET 应用程序,已移植到 .NET 6.0 并正在执行跨平台(Windows 和 Linux)。

许多遗留代码是通过硬编码路径创建来开发的,在字符串中使用反斜杠,例如

new StreamWriter(FeuxBarreFolderName + @"\\JazzSchmazz.txt");
Run Code Online (Sandbox Code Playgroud)

我已经转换成类似的东西

new StreamWriter(Path.Combine(FeuxBarreFolderName, "JazzSchmazz.txt"));
Run Code Online (Sandbox Code Playgroud)

我想防止任何开发人员意外或故意在硬编码路径中再次添加 \ 。除了在代码审查时处理此问题之外,是否有一种方法可以通过代码分析或测试时的严重失败自动执行此操作?我的搜索没有帮助。

我曾经有过的想法

  • 修改我的 Docker 集成测试中的 ext4 文件系统,以防止文件名带有 \. 我不知道这是否可能/合理。
  • 在我的 Docker 集成测试中发挥创意,防止在根目录中创建文件(从父目录中删除w),但允许在子目录中创建文件(再次将w添加到特定子目录)。这感觉超级脆。
  • 查找或编写一个分析器来查看字符串并抱怨任何包含 \ 字符的字符串。

这里有更好的方法吗?

.net c# linux ext4

5
推荐指数
1
解决办法
393
查看次数

Visual Studio 2019 C# Docker 调试进程附加错误

我正在尝试调试从 Visual Studio 2019(版本 16.11.10)运行 C#/.NET 6.0 控制台应用程序的 Linux 容器。

当我使用“调试/附加到进程...”连接到正在运行的容器并附加到我的进程时,出现错误:

无法启动调试适配器。输出窗口中可能会提供其他信息。

无法在“/home/dockeruser/.vs-debugger”找到调试器脚本

出于公司安全目的,我以用户dockeruser身份运行容器工作负载,但当我将 Dockerfile 调整为以用户 root 身份运行时,我可以重现此情况。错误信息变为

无法在“/root/.vs-debugger”找到调试器脚本

输出显示

Unable to find debugger script at '/home/dockeruser/.vs-debugger'.


Initialization log:
Determining user folder on remote system...
Checking for existing installation of debugging tools...
Downloading debugger launcher...
Creating debugger installation folder: /home/dockeruser/.vs-debugger
Copying debugger launcher to /home/dockeruser/.vs-debugger/GetVsDbg.sh
Failed: Failed to copy files.
Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
Failed: Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
The program '[1] …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-debugging docker visual-studio-2019

4
推荐指数
1
解决办法
4186
查看次数