给出以下代码:
using System;
namespace Sandbox
{
class CommandLine
{
static void Main()
{
String[] args = Environment.GetCommandLineArgs();
String executable = args[0];
String[] paramList = getParamList(args);
System.Console.WriteLine("Directory ....... {0}", Environment.CurrentDirectory);
System.Console.WriteLine("Executable ...... {0}", args[0]);
System.Console.WriteLine("Params .......... {0}", String.Join(", ", paramList));
}
private static String[] getParamList(String[] args)
{
String[] paramList = new String[args.Length - 1];
for (int i = 1; i < args.Length; i++)
{
int j = i - 1;
paramList[j] = args[i];
}
return paramList;
}
}
}
...保存为commandline.cs,csc
'保存为commandline.exe
我想获取可执行文件的完整路径和文件名。这段代码几乎可以实现,但它不是100%准确:
commandline.exe foo bar baz
;一切都很好commandline foo bar baz
,我只获得文件名sans扩展名;不是我想要的sandbox\commandline foo bar baz
;我得到了相对路径和部分文件名我确信获得可执行文件其他的完整路径和文件名要比字符串操作更容易,对吗?
答案 0 :(得分:2)
请注意,这需要引用system.windows.forms
。
答案 1 :(得分:1)
那将是
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
请注意,从Visual Studio中运行应用程序时,很可能会返回vshost file的完整路径。
答案 2 :(得分:1)
使用Assembly.GetExecutingAssembly().CodeBase
答案 3 :(得分:0)
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
答案 4 :(得分:0)
string path = System.Windows.Forms.Application.ExecutablePath;
答案 5 :(得分:0)
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;
Application.ExecutablePath将为您提供执行代码的应用程序的路径。例如,调用你的DLL的应用程序。上面的行为您提供了应用程序的完整路径。
您可以在以下网址了解详情:HOW TO: Determine the Executing Application's Path
答案 6 :(得分:0)
这就是我们使用的。似乎可以从Visual Studio或独立运行的Console,WinForms和WPF应用程序中运行。
System.Reflection.Assembly entryAssembly =
System.Reflection.Assembly.GetEntryAssembly();
string applicationPath = entryAssembly != null ? entryAssembly.Location :
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
string applicationDirectory = Path.GetDirectoryName(applicationPath);