如何从ClickOnce应用程序获取命令行?

在发布之前,我去了Project – > Properties – > Options – > File Associations,并添加了扩展名“.hsp”。 设置一个图标和一个ProgID(“MyCompany.Document.1”进行测试)。 我发布和安装后,我的.hsp文件有我设置的图标,所以应该正确设置文件关联,但是当我双击其中一个文件时,应用程序运行,我希望我双击的文件的名称是在命令行中。 我尝试读取传递给我的Main函数的参数,尝试了Environment.CommandLine ,并尝试了Environment.GetCommandLineArgs() ,但我发现的唯一的事情就是应用程序路径。 顺便说一下,在Main函数中创建主窗体之前,我正在进行所有这些检查,只是为了测试。 args参数为空,另外两个只包含我的应用程序路径。

这是我的Mainfunction的开始:

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

当您使用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