首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取C#控制台应用程序的.exe名称?

如何获取C#控制台应用程序的.exe名称?
EN

Stack Overflow用户
提问于 2011-10-25 03:51:44
回答 8查看 25.5K关注 0票数 21

我正在调试"xiixtasks.exe",这是一个用VS2008编写的C#控制台模式应用程序。

我正在尝试从xiixtasks.exe获取版本信息。

当我尝试"Process.GetCurrentProcess()“时,它给了我vshost.exe的文件名和版本信息,而不是xiixtasks.exe:

  // WRONG: this gives me xiixtasks.vhost.exe, version 9.0.30729.1
  //        I *want* "xiixtasks.exe", version 1.0.0.1024
  System.Diagnostics.FileVersionInfo fi =
    System.Diagnostics.Process.GetCurrentProcess().MainModule.FileVersionInfo;

我应该做些什么呢?

提前谢谢你!

======================================================

解决方案:

1)最初的问题确实是IDE的"vshost“包装器。一种解决方法是更改构建设置。

2) Assembly.GetExecutingAssembly().CodeBase是一个很好的解决方案--谢谢!它可以在调试器内部和外部工作。

3)不幸的是,当我尝试用一个期望正常文件路径的函数(而不是像GetExecutingAssembly()“提供的URI”那样的Uri)调用它时,它死于一个"Uri格式不受支持“的异常。

4)最终解决方案:先调用GetExecutingAssembly(),然后调用Uri.LocalPath ():

...
else if (cmdArgs.cmd.Equals(CmdOptions.CMD_SHOW_VERSION))
{
    string codeBaseUri = 
       Urifile.System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
    string codeBase =
        new Uri (codeBaseUri).LocalPath;
    string sVersion = Util.GetWindowsVersion(codeBase);
    System.Console.WriteLine ("version({0}): {1}: ",
        Util.Basename(codeBase), sVersion);
}

再次感谢大家!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7881148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档