Как получить командную строку из приложения ClickOnce?

Перед публикацией я перешел в Project → Properties → Options → File Associations и добавил расширение ".hsp". Установите значок и ProgID ( "MyCompany.Document.1" для тестирования). После того, как я опубликовал и установил, у моих файлов .hsp был установлен значок, поэтому ассоциация файлов должна быть правильно настроена, но когда я дважды щелкнул один из этих файлов, приложение запустило, и я ожидал, что имя файла, который я дважды щелкнул, в командной строке. Я попытался прочитать параметр, переданный моей функции Main, попробовал Environment.CommandLine и попытался Environment.GetCommandLineArgs(), но единственное, что я нашел, это путь приложения. Кстати, я делаю все это, прежде чем создавать свою основную форму в функции Main, просто для проверки. Параметр args пуст, а два других содержат только мой путь к приложению.

Это начало моей функции Main:

    static void Main(string[] args)
    {
        try
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
            MessageBox.Show("CommandLine -> " + Environment.CommandLine);
            foreach (string str in args) MessageBox.Show("args -> " + str);
            foreach (string str in Environment.GetCommandLineArgs()) MessageBox.Show("GetCommandLineArgs -> " + str);

Ответ 1

Когда вы публикуете приложение с ClickOnce, а затем запускаете его, дважды щелкнув связанный файл, путь к этому файлу фактически сохраняется здесь:

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0]

См. документацию MSDN для этого здесь:

http://msdn.microsoft.com/en-us/library/system.runtime.hosting.activationarguments.aspx

Плюс учебник по добавлению ассоциаций файлов в "Опубликованные" проекты:

http://blogs.msdn.com/b/mwade/archive/2008/01/30/how-to-add-file-associations-to-a-clickonce-application.aspx