2012-08-06 54 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