Visual studio 2010 阻止blend向应用程序添加startupURI?

Visual studio 2010 阻止blend向应用程序添加startupURI?,visual-studio-2010,startup,blend,Visual Studio 2010,Startup,Blend,是否有一些已知的技巧告诉blend停止尝试在我的app.xaml中设置startupURI?我在谷歌上搜索了一下,但什么也没看到,所以我想我应该在这里问一下 我使用一个启动例程,自己实例化mainwindow。每当我让blend编译时,它都喜欢加入startupURI=“MainWindow.xaml”。偶尔我会看到一些类似这样的信息:“没有与这个项目相关的启动场景。你想混合来修复它吗?”或者类似的信息。我单击取消/否,但它仍然在我的代码中抛出一个小精灵。内部混合有一些机制来检查这个属性,或者它

是否有一些已知的技巧告诉blend停止尝试在我的app.xaml中设置startupURI?我在谷歌上搜索了一下,但什么也没看到,所以我想我应该在这里问一下

我使用一个启动例程,自己实例化mainwindow。每当我让blend编译时,它都喜欢加入startupURI=“MainWindow.xaml”。偶尔我会看到一些类似这样的信息:“没有与这个项目相关的启动场景。你想混合来修复它吗?”或者类似的信息。我单击取消/否,但它仍然在我的代码中抛出一个小精灵。内部混合有一些机制来检查这个属性,或者它不会通过对话框向我抱怨。那么,我该如何告诉它“不,谢谢你,没有这个我很好?”,哈哈

这很烦人。我打开blend做一些简单的事情,比如使用颜色选择器并使用它进行编译,因为VS2010没有打开。我的结果是两个主窗口。但它并不是每次都这么做,所以这不是一个可重复的行为。编译器只是随机运行


编辑:我正在使用blend 4,但我在使用blend 3时也看到了这种情况。

这是一个非常可怕的骇客,但是,嘿,它很管用。默认情况下,StartupUri为null,但您不能使用属性将其设置为null,因此,如果您喜欢生活在边缘,可以绕过属性

// Dangit blend! Stop inserting a stupid StartupUri    
private void FixStartupUri()
{
    var type = typeof(Application);
    var startupUri = type.GetField("_startupUri", BindingFlags.Public
        | BindingFlags.NonPublic
        | BindingFlags.Instance);
    startupUri.SetValue(this, null);
}
将其添加到应用程序类中,并按如下方式调用:

protected override void OnStartup(StartupEventArgs e)
{
    FixStartupUri();
    base.OnStartup(e);
    // Do the rest of your startup stuff.
}

我支持这一点,当您需要从statup代码实例化窗口时,这显然很烦人!!我希望Blend团队的人经常访问这个论坛,并且可以在下一个版本的Blend中包含对此的修复或至少一个复选框选项。这种情况每周至少发生三次。我尽量不使用blend构建我的项目,但很多时候我必须这样做,以使我的视觉效果在画板上刷新。构建时,它将使用活动的.xaml文件(窗口、页面、用户控件)并将其设置为启动。