【问题标题】:C# No Arguments Being Passed to MainC# 没有参数被传递给 Main
【发布时间】:2016-11-19 00:48:00
【问题描述】:

我一直在尝试将我的参数传递给我在 C# 中的 main 方法。主要是我只想捕获被双击的文件路径。我的文件带有自定义扩展名,当它运行时打开我的程序。那部分有效。

    static string file = "";

    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();

        if (args.Length > 0) file = args[0];

        Application.Run(new Form1());
    }

    public Form1()
    {
        InitializeControls();
    }

我也试过这个方法,差别不大。

    static string file = "";

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();

        string[] args = Environment.GetCommandLineArgs();
        if (args.Length > 0) file = args[0];

        Application.Run(new Form1());
    }

    public Form1()
    {
        InitializeControls();
    }

值得一提的是,我在部分课程中有这个。我不知道这是否会直接影响它。

如果我可以获取被双击的文件,我真的不需要获取 args,但我觉得这是唯一的方法,现在我很好奇。

我错过了什么让我无法将 args 传递给我的 main?

【问题讨论】:

  • 您的应用程序运行情况如何?
  • 我已经设置好了,所以当你双击一个带有我的扩展名的文件时,它会打开程序。我在 Visual Studio 的发布设置下进行了设置。

标签: c# main args


【解决方案1】:

如果您在命令提示符下运行“ftype”,您的程序类型应显示为:

YOURTYPE="yourProgram.exe" "%1"

如果"%1" 没有以这种方式出现,则关联是错误的(它不会将文件名作为参数传递)。试试看吧。

【讨论】:

  • 在我电脑的普通cmd中?
  • 是的。只需在命令提示符下运行命令并查找您的程序即可。
  • 我里面有很多东西,我根本看不到程序。
  • 您是如何注册您的程序以使用自定义扩展的?如果你运行命令“assoc”,你会看到你的扩展吗?一般来说,您应该能够执行以下操作: a) 以管理员身份打开命令提示符 b) 运行 ASSOC .YOUREXT=YOURLABEL c) 运行 FTYPE YOURLABEL="PATH\YourProgram.exe" "%1"。运行此程序后,您应该能够单击或键入扩展名为 .YOUREXT 的文件,它应该调用您的程序并将文件名作为参数发送。您可以通过将 ftype 与 Notepad.exe 关联并查看文件是否在其中打开来进行测试。
  • 我没看到。我通过进入 Visual Studio 中的发布设置来设置它,您可以添加一个扩展来打开应用程序。我有一种感觉,我没有正确地做到这一点。但它确实有效。
猜你喜欢
  • 2012-03-03
  • 2013-09-21
  • 2017-06-14
  • 2015-08-22
  • 1970-01-01
  • 2014-06-28
  • 2017-01-03
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多