【发布时间】:2012-10-08 09:20:13
【问题描述】:
我的 C# 应用程序将其用双引号括起来的完整路径写入文件,其中:
streamWriter.WriteLine("\"" + Application.ExecutablePath + "\"");
正常运行,写入文件包含
"D:\Dev\Projects\MyApp\bin\Debug\MyApp.exe"
但是,如果我的应用程序的可执行路径包含#,就会发生一些奇怪的事情。输出变为:
"D:\Dev\Projects#/MyApp/bin/Debug/MyApp.exe"
# 之后的斜杠变为正斜杠。这会导致我正在开发的系统出现问题。
为什么会发生这种情况,有没有比字符串更优雅的方法来防止它。在写入之前替换路径?
【问题讨论】:
-
我无法重现这个。我的应用程序从 C:\my#\project\foo.exe 运行,它正确地写出 Application.ExecutablePath,正如您在上面所写的那样。调试时 Application.ExecutablePath 是否正确检查?您是否对此处未显示的文字进行任何后期处理?
-
我在一个新项目中重新测试了它,只有编写文件的代码。它仍然重现。如果这有什么不同的话,它使用的框架是 4.5。
-
很有趣,尤其是在下面 Elian 的帖子中。想知道我做了什么不同(尽管我使用的是 4.0 框架...)