C # аргументы не передаются в основную

Я пытался передать свои аргументы моему основному методу на C #. В основном я просто хочу зафиксировать путь к файлу, который был дважды нажат. У меня есть файлы с настраиваемым расширением, и когда он запускается, открываю мою программу. Эта часть работает.

    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();
    }

Стоит отметить, что у меня это в частичном классе. Я не знаю, влияет ли это на него напрямую или нет.

Мне действительно не нужно получать аргументы, если я могу просто получить файл, который был дважды нажат, но я чувствую, что это единственный способ, и теперь мне любопытно.

Что мне не хватает, что мешает мне передавать аргументы в основной?


person blapaz    schedule 15.07.2016    source источник
comment
как у вас работает ваше приложение?   -  person Daniel A. White    schedule 15.07.2016
comment
Что ж, у меня он настроен так, что, когда вы дважды щелкаете файл с моим расширением, он открывает программу. Я установил это в настройках публикации в Visual Studio.   -  person blapaz    schedule 15.07.2016
comment
Может быть актуально: stackoverflow.com/questions/ 13654197 /   -  person Tomer    schedule 15.07.2016


Ответы (1)


если вы запустите "ftype" в командной строке, ваш тип программы должен выглядеть так:

YOURTYPE="yourProgram.exe" "%1"

Если "%1" не отображается точно таким образом, то ассоциация неверна (имя файла в качестве аргумента не передается). Попробуйте.

person Milton Hernandez    schedule 15.07.2016
comment
В обычном cmd на моем компе? - person blapaz; 15.07.2016
comment
да. Просто запустите команду в командной строке и найдите свою программу. - person Milton Hernandez; 15.07.2016
comment
У меня там куча всего, а программы я вообще не вижу. - person blapaz; 15.07.2016
comment
Как вы зарегистрировали свою программу для работы с кастомным расширением? Если вы запустите команду assoc, вы увидите свое расширение? Как правило, вы должны уметь делать следующее: a) Откройте командную строку от имени администратора b) запустите ASSOC .YOUREXT = YOURLABEL c) запустите FTYPE YOURLABEL = PATH \ YourProgram.exe% 1. После запуска вы должны иметь возможность просто щелкнуть или ввести файл с расширением .YOUREXT, и он должен вызвать вашу программу и отправить имя файла в качестве параметра. Вы можете проверить это, связав ftype, скажем, с Notepad.exe и проверив, открывается ли в нем файл. - person Milton Hernandez; 15.07.2016
comment
Я не вижу его. Я настроил его, перейдя в настройки публикации в Visual Studio, и вы можете добавить расширение, чтобы открыть приложение. У меня такое ощущение, что я тогда делаю это неправильно. Но это действительно работает. - person blapaz; 15.07.2016
comment
Попробуйте настроить вручную в CMD от имени администратора - person Milton Hernandez; 15.07.2016