我正在尝试更改 C# 代码中的目录,以便我可以运行批处理文件。
例如:
D:Program FilesCommon Filesasd.bat
但是,当我使用Directory.SetCurrentDirectory(@"D:Program FilesCommon Filesasd.bat");
时,它会给我两个错误。
- 类、结构或接口成员声明中的标记"("无效 错误
- "System.IO.Directory.SetCurrentDirectory(string)"是一个"方法",但像"类型"一样使用
谁能帮我。我仍然是C#的新手。
老问题,但接受的答案不正确。
收到此类错误意味着未正确设置对库的引用(缺少使用或未设置对 .NET 类或 NUGET 包的依赖项)。在这种情况下,您可以在顶部声明using System.IO;
,也可以通过完全限定命名空间来引用方法(就像我在下面所做的那样)。
关于您要使用的方法,还有另一个问题:
当您调用System.IO.Directory.SetCurrentDirectory(path)
时,它必须是没有文件名的路径。您传递了包含文件名的完整路径asd.bat
。
若要获取路径,请使用System.IO.Path.GetDirectoryName
,例如:
var pathWithFileName = @"D:Program FilesCommon Filesasd.bat";
var pathOnly = System.IO.Path.GetDirectoryName(pathWithFileName);
System.IO.Directory.SetCurrentDirectory(pathOnly);
字符串前面的@
符号是必需的,否则将被视为转义字符,而不是目录分隔符。
如果要事先检查路径是否存在,请使用
if (System.IO.Directory.Exists(pathOnly))
System.IO.Directory.SetCurrentDirectory(pathOnly);
注意:当然,您可以通过在顶部声明using System.IO;
来缩写上面的代码 - 我在这里没有这样做,因为我想展示该方法的来源。
错误一定在其他地方。也许您确实将代码直接放在类中而不是成员中?