2012-08-06 57 views
1

我相信这是一个微不足道的问题,但它是我无法解决的问题之一。更改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> 

不过,我则得到了下面的错误,说明我需要设置构建属性的资源,如下所示。以前它被设置为Page,这与MainWindow.xaml设置为相同。

Resource

这样做,然后我有一个编译器错误,指出InitializeComponent();不存在于当前上下文之后。我知道发生这种情况的唯一时间是类/名称空间在.cs文件和.xaml文件之间不同步,但事实并非如此。

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

更新:塞瓦蒂托夫解决了第一部分。但现在我有一个TargetInvocationExceptionSystem.Security.SecurityException与下面的图片中的内部异常(在新标签中打开图像,如果它太难读):

Security Exception

为这一个任何想法?

+0

异常的图像异常无用。异常窗口底部有一个链接,用于将异常信息复制到剪贴板。下次尝试。 – Will 2012-08-07 13:01:32

回答

3

好了,我现在已经想通了什么事情。

正如Seva Titov在答案中指出的那样,StartupUri的值应该是"View/MVVMPrototype.xaml"

InitializeComponent();错误的地方是说明它并没有在当前的背景下定义是因为对MVVMPrototype.xaml的属性生成操作设置为资源,不页。最初我以为添加一个新的Window控件解决了这个问题,但是由于构建操作被设置为新控件的页面,所以它变成了一个红鲱鱼 - 我认为这是默认设置。

TargetInvocationException最后的错误和System.Security.SecurityException内例外,我通过固定在项目属性切换“启用的ClickOnce安全设置” - >安全生成app.manifest

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

这解决了我的问题。希望它可以帮助别人。请注意,我几乎没有任何有关部署/发布的知识,而且我不确定后两者会如何影响这一点。

3

的StartupUri指定相对于文件的位置,而你似乎在文件夹中查看文件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"> 
+0

感谢您的回答。我试过了,它仍然不会在后面的代码中的'InitializeComponent();'上编译。我确实将构建操作从资源切换回页面,并且确实进行了编译。但是我有一个“调用目标引发异常”的运行时。无论您如何使用正斜杠显示'StartupUri'的方式,以及如何使用全站显示的方式,它都不会抱怨它找不到它。 – 2012-08-06 18:49:31

+0

您的MVVMPrototype.xaml是否为窗口类型? – Andre 2012-08-06 18:56:04

+0

@达伦,确切的错误信息是什么? – 2012-08-06 19:50:44