C# 不同版本的备用启动对象

C# 不同版本的备用启动对象,c#,wpf,visual-studio,visual-studio-2008,ide,C#,Wpf,Visual Studio,Visual Studio 2008,Ide,我有一个标准的WPF应用程序。 VS解决方案有一个主项目和一个单元测试项目(使用标准VS单元测试套件) 出于单元测试以外的测试目的(例如,只是以交互方式尝试一段新代码),我必须等待整个应用程序启动,然后单击要测试的表单 我更愿意选择一个具有不同入口点的替代构建,它跳过所有我不需要的东西,并将我放在我想要的地方。 除了“debug”和“release”之外,我还创建了一个名为“debug(test)”的额外构建配置。 如何设置选择此生成时执行的不同启动对象 或者这个问题还有其他解决方案吗?为了简化

我有一个标准的WPF应用程序。 VS解决方案有一个主项目和一个单元测试项目(使用标准VS单元测试套件)

出于单元测试以外的测试目的(例如,只是以交互方式尝试一段新代码),我必须等待整个应用程序启动,然后单击要测试的表单

我更愿意选择一个具有不同入口点的替代构建,它跳过所有我不需要的东西,并将我放在我想要的地方。 除了“debug”和“release”之外,我还创建了一个名为“debug(test)”的额外构建配置。 如何设置选择此生成时执行的不同启动对象

或者这个问题还有其他解决方案吗?为了简化测试和分析,我更喜欢不需要添加额外项目或dll的东西

一个可能的解决方案是定义一个编译器符号并在我的app.xaml.cs中检查它

#if DEBUG_TEST
    TestWindow view = new TestWindow();
    view.Show();
#else
    MainWindow view = new MainWindow();
    view.Show();
#endif

我不知道为什么你会认为这种方法是“哈奇”。 这似乎是正确的选择。
只需选择您的配置调试(TEST)并将调试测试定义添加到项目的属性页面


当您完成测试时返回正常配置。

我不知道为什么您认为这种方法是“哈奇”。 这似乎是正确的选择。
只需选择您的配置调试(TEST)并将调试测试定义添加到项目的属性页面


完成测试后返回正常配置。

另一种方法是依赖注入:

假设您使用以下代码:

IMainView view = DIContainer.GetInstance<IMainView>();
view.Show();
这个简单的方法可以自己完成(
在GetInstance中使用Activator.CreateInstance
),但是有几个框架可以解决这个问题


另一种方法是依赖注入:

假设您使用以下代码:

IMainView view = DIContainer.GetInstance<IMainView>();
view.Show();
这个简单的方法可以自己完成(
在GetInstance中使用Activator.CreateInstance
),但是有几个框架可以解决这个问题


我只是在写问题时才想到这个解决方案,但对我来说,将测试代码的一部分与普通代码放在同一个文件中,而不是简单地使用另一个app2.xaml.cs,这似乎很奇怪。我想我还是可以这样做的。这个解决方案只在我写问题的时候出现,但对我来说,将测试代码的一部分与普通代码放在同一个文件中,而不是简单地使用另一个app2.xaml.cs,这似乎很奇怪。我想我无论如何都可以这样做。最后我采用了简单的编译器符号方法,但是依赖注入似乎是我应该研究的东西,谢谢你提供的信息!最后,我使用了简单的编译器符号方法,但是依赖注入似乎是我应该研究的东西,谢谢你提供的信息!
DIContainer.SetDefaultInstance<IMainView, TestView>();
interface IMainView
{
     void Show();
}