更改WPF项目的启动文件

时间:2012-08-06 18:24:56

标签: wpf

我确信这是一个微不足道的问题,但这是我似乎无法解决的问题之一。

我将App.xaml中的启动文件从StartupUri="MainWindow.xaml"更改为下面的代码,希望这就是我需要做的全部。

<Application x:Class="MVVMPrototype.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MVVMPrototype.View.MVVMPrototype.xaml">
<Application.Resources>

</Application.Resources>

然而,我得到以下错误,声明我需要将build属性设置为resource,如下所示。以前它被设置为Page,这与MainWindow.xaml设置的相同。

Resource

执行此操作后,我遇到编译器错误,指出当前上下文中不存在InitializeComponent();。我知道这种情况发生的唯一一次是.cs文件和.xaml文件之间的类/命名空间不同步,但事实并非如此。

我看过StartupUri documentation,但我没有发现它有用。我确信这是我忽略的愚蠢行为。是的,我已经干净并且多次建造了这个项目而没有运气。有谁知道如何解决它?

更新: Seva Titov解决了第一部分问题。但是现在我有一个TargetInvocationException内部例外System.Security.SecurityException,下面的图片(如果难以阅读,请在新标签中打开图片):

Security Exception

对于这个的任何想法?

3 个答案:

答案 0 :(得分:4)

StartupUri指定相对文件位置,您似乎在文件夹View中有一个文件MVVMPrototype.xaml,因此您的代码应如下所示:

<Application x:Class="MVVMPrototype.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     StartupUri="View/MVVMPrototype.xaml">

答案 1 :(得分:3)

好的,我现在已经知道发生了什么。

正如Seva Titov的回答所指出的,StartupUri的值应为"View/MVVMPrototype.xaml"

它在当前上下文中未定义的InitializeComponent();错误是因为 MVVMPrototype.xaml的属性的构建操作设置为资源,而不是页面。最初我想添加一个新的Window控件解决了这个问题,但事实证明它是一个红色的鲱鱼,因为构建操作被设置为新控件上的页面 - 我认为这是默认设置。

TargetInvocationException的最后一个错误以及System.Security.SecurityException的内部异常我通过切换项目属性下的“启用ClickOnce安全设置”来修复 - &gt;安全性以生成 app.manifest

这给了我最后的错误,它无法找到清单签名证书,所以我只是取消选中项目属性下的“签署ClickOnce清单” - &gt;签名。

这解决了我的问题。希望它可以帮助别人。请注意,我对部署/发布的知识很少(如果有的话),我不确定最后两个会如何影响这一点。

答案 2 :(得分:0)

在 App.xaml 中

StartupUri="/ProjectName;component/Folder Or Path/File or Page.xaml">