C# 如何以编程方式启动带有 Visual Studio 2019 的项目实例
C# how to programmatically launch an instance of a project with Visual Studio 2019
2019 年 Visual Studio 我有一个解决方案,其中一个项目必须始终在同一个解决方案中启动另一个项目。
我当然可以启动已部署的实例,但这样做我不会有最后更新的实例。
所以我的问题是:如何通过代码以编程方式启动项目,就像用鼠标进行 DEBUG--->LAUNCH NEW INSTANCE 一样?
在 Debugger.. 类中看不到任何有用的东西。
感谢您的帮助
帕特里克
您描述的是 OLE 自动化。
我不知道这是内置的了。
如果是,VS 2019 将在其主目录中的某处提供一个类型库,允许您启动和自动化 visual studio 的界面。
如果您只是想提供调试信息,也许 mshost (sp ?) 有一个连接协议,允许您在错误发生时捕获错误。
我认为问题的关键是重建另一个项目,而运行在一个项目中,我们通常有项目引用。当您包含项目引用时,dll 将与您的应用程序的其余部分一起构建。
项目 A(重建启动实例):
xaml代码:
<Grid>
<TextBox Width="100" Height="50" Background="AliceBlue" FontSize="29">hello</TextBox>
<Button Height="50" Width="100" HorizontalAlignment="Right" Click="Button_Click">click</Button>
</Grid>
cs代码:
using System.Diagnostics;
using System.Windows;
namespace rebuildstartinstance
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "C:\...\ WpfApp1\bin\Debug\WpfApp1.exe";
p.Start();
}
}
}
注意:构建和 运行 后,生成的 .exe 文件位于项目的 bin 文件夹中。检查您是否正在 运行ning 那个 .exe 文件。
您还可以检查 .exe 文件的创建日期是否在编译后更新。如果不是,则您 运行 没有安装正确的 .exe 文件。
项目 B (WpfApp1):
xaml代码:
<StackPanel>
<TextBox Width="100" Height="50" Background="DarkViolet" FontSize="29">hello</TextBox>
<TextBox Width="100" Height="50" Background="Cornsilk" FontSize="29">hello</TextBox>
</StackPanel>
右击项目A下的References(rebuildstartinstance) ->Add Reference...->SelectProjects->勾选项目B(WpfApp1)->点击ok
更新B项目:
<StackPanel>
<TextBox Width="100" Height="50" Background="DarkViolet" FontSize="29">hello</TextBox>
<TextBox Width="100" Height="50" Background="Cornsilk" FontSize="29">hello</TextBox>
<TextBox Width="100" Height="50" Background="DarkGreen" FontSize="29">hello</TextBox>
</StackPanel>
运行ning项目A点击按钮结果如下:
2019 年 Visual Studio 我有一个解决方案,其中一个项目必须始终在同一个解决方案中启动另一个项目。 我当然可以启动已部署的实例,但这样做我不会有最后更新的实例。
所以我的问题是:如何通过代码以编程方式启动项目,就像用鼠标进行 DEBUG--->LAUNCH NEW INSTANCE 一样?
在 Debugger.. 类中看不到任何有用的东西。
感谢您的帮助
帕特里克
您描述的是 OLE 自动化。 我不知道这是内置的了。
如果是,VS 2019 将在其主目录中的某处提供一个类型库,允许您启动和自动化 visual studio 的界面。
如果您只是想提供调试信息,也许 mshost (sp ?) 有一个连接协议,允许您在错误发生时捕获错误。
我认为问题的关键是重建另一个项目,而运行在一个项目中,我们通常有项目引用。当您包含项目引用时,dll 将与您的应用程序的其余部分一起构建。
项目 A(重建启动实例):
xaml代码:
<Grid>
<TextBox Width="100" Height="50" Background="AliceBlue" FontSize="29">hello</TextBox>
<Button Height="50" Width="100" HorizontalAlignment="Right" Click="Button_Click">click</Button>
</Grid>
cs代码:
using System.Diagnostics;
using System.Windows;
namespace rebuildstartinstance
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "C:\...\ WpfApp1\bin\Debug\WpfApp1.exe";
p.Start();
}
}
}
注意:构建和 运行 后,生成的 .exe 文件位于项目的 bin 文件夹中。检查您是否正在 运行ning 那个 .exe 文件。 您还可以检查 .exe 文件的创建日期是否在编译后更新。如果不是,则您 运行 没有安装正确的 .exe 文件。
项目 B (WpfApp1):
xaml代码:
<StackPanel>
<TextBox Width="100" Height="50" Background="DarkViolet" FontSize="29">hello</TextBox>
<TextBox Width="100" Height="50" Background="Cornsilk" FontSize="29">hello</TextBox>
</StackPanel>
右击项目A下的References(rebuildstartinstance) ->Add Reference...->SelectProjects->勾选项目B(WpfApp1)->点击ok
更新B项目:
<StackPanel>
<TextBox Width="100" Height="50" Background="DarkViolet" FontSize="29">hello</TextBox>
<TextBox Width="100" Height="50" Background="Cornsilk" FontSize="29">hello</TextBox>
<TextBox Width="100" Height="50" Background="DarkGreen" FontSize="29">hello</TextBox>
</StackPanel>
运行ning项目A点击按钮结果如下: