C# &引用;以…开头;在资源管理器中不启动我的应用程序

C# &引用;以…开头;在资源管理器中不启动我的应用程序,c#,.net,winforms,visual-studio,C#,.net,Winforms,Visual Studio,我正在编写一个Windows窗体应用程序,用于读取和写入我自己的文件类型。该程序使用Visual Studio 2015、.NET 4.6制作 当我要将我的程序与文件类型关联时,我遇到了一个问题,右键单击该文件,单击“打开方式”,最后我选中了始终使用该程序打开文件扩展名的选项。问题是,当我试图双击文件启动程序时,什么都没有发生。该程序不会显示在屏幕上 我打开任务管理器查看它是否启动,我注意到它确实启动了一小段时间,但在后台运行,然后关闭 起初,我认为这是我的项目的一个问题,所以我创建了一个新的W

我正在编写一个Windows窗体应用程序,用于读取和写入我自己的文件类型。该程序使用Visual Studio 2015、.NET 4.6制作

当我要将我的程序与文件类型关联时,我遇到了一个问题,右键单击该文件,单击“打开方式”,最后我选中了始终使用该程序打开文件扩展名的选项。问题是,当我试图双击文件启动程序时,什么都没有发生。该程序不会显示在屏幕上

我打开任务管理器查看它是否启动,我注意到它确实启动了一小段时间,但在后台运行,然后关闭

起初,我认为这是我的项目的一个问题,所以我创建了一个新的Windows窗体项目,没有更改单个项目设置,而是将文件类型与该项目关联,但我仍然有相同的问题。我也在不同的计算机上尝试了相同的应用程序,我也遇到了同样的问题

请注意,我实际上可以正常打开该程序,即双击Windows资源管理器中的.exe,并通过Visual Studio运行它

这是我创建的测试项目中Program.cs和Form1.cs中的内容,它也无法通过关联启动:

Program.cs

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(args.Length == 0 ? new Form1(string.Empty) : new Form1(args[0]));
    }
}
public partial class Form1 : Form
{
    public Form1(string path)
    {
        InitializeComponent();

        // Nothing here gets called.            

        if (path != string.Empty)
        {
            MessageBox.Show("File path found!");
        }
        else
        {
            MessageBox.Show("No file path found.");
        }
    }
}
这对我来说是新的,因为我以前已经将文件类型关联到我的程序,并且没有任何问题。然而,这是早期版本的VisualStudio,所以我不确定这是否与此有关

这让我困惑了好几天,所以我来这里寻求帮助,希望能帮助其他有同样问题的人

我在Windows7x64和Windows10x86上都试过了


我很感激您能想到这一点。

将应用程序与文件扩展名相关联(适用于windows 10):


您的代码如何,通常必须按原样工作,但最好通过以下方式更新代码:

static class Program
{
    [STAThread]
    static void Main(string[] args)
    {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}


没有尝试代码,因为我现在无法访问VS。所以可能有一些代码错误。

代码按发布的方式工作。我也无法重现您的问题:(如帖子所示。您是否有任何未提及的情况?例如在VM中运行?试图通过UNC路径启动可执行文件?任何可能有助于解释该行为的外部因素。@KevinBurdett我希望是这样,但不,我没有使用VM,只是在计算机的主操作系统上正常运行它。我只是瘦了一点k奇怪的是,即使在重建项目后,我的两台计算机上都出现了同样的问题。你是否使用了与我相同的VS和.NET版本?因为如果不是,我会冒险,并假设这与此有关,尽管感觉不太可能。@WilliamEvenius:我在Macbook Pro.Windows 10 x64上运行的是Parallels虚拟机,VS 2015 Pro 14.0.24720.00更新1、.NET 4.6.01038.@KevinBurdett的.NET版本相同。但是我使用的是Visual Studio Community 2015版本14.0.23107.0。我将对此进行进一步研究,如果发现任何问题,我将向您报告,顺便说一句,谢谢。
static class Program
{
    [STAThread]
    static void Main(string[] args)
    {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // The first element in the array contains the file name of the executing program. 
        // If the file name is not available, the first element is equal to String.Empty. 
        // The remaining elements contain any additional tokens entered on the command line. 
        var args = Environment.GetCommandLineArgs()[0];
        var path = (args.Count == 1) ? args[0] : args[1];

        if (path == string.Empty)
        {
            MessageBox.Show("No file path found.");
        }
        else
        {
            MessageBox.Show("File path found!");
        }
    }
}