C# 在Visual Studio中从C切换文件#

C# 在Visual Studio中从C切换文件#,c#,visual-studio,C#,Visual Studio,我的项目中有一个文件浏览器,当我单击该文件时,我希望它在Visual Studio中打开-我现在可以这样做。然后,当我单击另一个文件时,我希望VisualStudio将焦点文件切换到新文件 到目前为止,我已经用以下代码在正确的项目和文件中打开了VisualStudio Process p = new Process(); p.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\C

我的项目中有一个文件浏览器,当我单击该文件时,我希望它在Visual Studio中打开-我现在可以这样做。然后,当我单击另一个文件时,我希望VisualStudio将焦点文件切换到新文件

到目前为止,我已经用以下代码在正确的项目和文件中打开了VisualStudio

Process p = new Process();
p.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe";
p.StartInfo.Arguments = projectPath+" "+ filePath;
p.Start();
我希望能够根据我在项目中单击的内容在Visual Studio中切换文件。

了解了如何操作。


好吧,如果代码如图所示,那就有意义了,因为你每次都会启动一个新的进程。是的,但我一直在切换文件。对于我们这些不使用Unity的人来说,比如Unity是如何做的,它没有任何意义。我也不想在没有解释这意味着什么的情况下切换文件。它会打开一个新的VS实例,因为这正是您的代码告诉它要做的,而计算机总是按照命令去做。因此,为了澄清您的问题,您需要得到的指导是,如何在现有的Visual Studio process\instance(devenv.exe)中打开文件。您实际上是在资源管理器中实现上下文菜单的“打开[此文件]…”功能,对吗?虽然您正在说明要使用哪个程序打开此文件,但这可能是一个重复的问题。尽管在这些问题中不清楚他们的答案中是否创建了devenv.exe的新进程\实例。。所以我不太确定这是一个重复的问题。是的,我试图在现有的Visual Studio process\实例(devenv.exe)中打开一个文件。
DTE dte;

void OpenFile(string file, string project)
{
    if (dte == null)
    {
        Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.16.0");
        dte = Activator.CreateInstance(visualStudioType) as DTE;
    }
    dte.ExecuteCommand("File.OpenProject", project);
    dte.ExecuteCommand("File.OpenFile", file);
    dte.MainWindow.Visible = true;
}