2011-04-04 98 views
24

我想添加一個WPF ResourceDictionary到一個剛剛創建的C#項目。該項目本來不是WPF項目,但現在我需要在其中包含一些WPF資源。爲什麼我無法將某些文件類型添加到VS2010項目中?

當我右鍵單擊該項目並選擇「添加」時,ResourceDictionary不是一個選項。即使我打開模式對話框並導航到ResourceDictionary類型應該在的位置(與其他WPF類型一起),它也不存在。當我手動添加一個具有ResourceDictionary語法的XAML文件到項目中時,我無法用WPF Application.Load(uri)語法以編程方式加載它,所以我覺得VS2010阻止我將文件添加到一個原因。

如何讓我的項目「能夠」添加ResourceDictionary而無需重新創建整個項目作爲WPF項目並從頭開始重新添加每個文件?

此外,什麼定義了可以添加到項目中的文件類型,以便將來避免類似的問題?希望它是簡單的,就像我需要添加到我的AssemblyInfo.cs文件中的一條線。

+0

項目創建的是什麼?我不是很驚訝,你不能添加一個WPF元素到一個非WPF項目。 – ChrisF 2011-04-04 20:50:14

+2

這應該作爲微軟的錯誤提交嗎?在Class項目上創建一個WPF窗口是完全有效的。 – 2012-10-17 11:11:48

回答

38

關閉該項目。創建一個新的項目,該項目是您將使用的WPF項目類型。然後在記事本中打開新的.csproj文件。找到ProjectTypeGuids元素。將這些GUID複製到剪貼板。在記事本中打開現有的.csproj文件。將這些GUID追加到此文件的ProjectTypeGuids元素中。 (檢查模糊。)在Visual Studio中重新加載您的項目。您現在應該可以添加所有WPF文件類型。 PS:我沒有專門做WPF,但我有其他項目類型,它沒有問題。

我相信GUIDS對於每個人都是一樣的,所以你需要的值應該是:{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ......這應該爲您節省創建新項目的步驟。

+0

我的csproj甚至沒有ProjectTypeGuids。我添加了這個和它的工作原理: {60dc8134-eba5-43b8-bcc9-bb4bc16c2548}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 2012-02-03 16:38:09

+1

不確定是否你可以簡單地在第一個 ... 元素下添加一個新的,但是我現有的一個項目列出了。 – Pakman 2012-05-11 14:52:23

+0

供參考:這裏是一個[編譯列表](http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs)與許多不同的項目GUIDs。它也包含提到的GUID。 – Vlad 2014-11-11 18:59:45

0

嘗試創建一個空白的WPF項目,然後區分.csproj文件(它們只是普通的XML)以及您的項目,以查看它們之間的區別 - 除了文件列表和奇怪的編譯器設置外,您可能找到一個標識項目類型的GUID或其他條目,您可以複製/粘貼來「升級」您的項目(當然在備份您的現有項目文件後!)

或者,您可以在csproj文件之間複製和粘貼文件/文件夾XML(仔細地)以快速「從頭開始重建整個項目」,所以這不需要擔心。

2

我認爲你最好的選擇是創建一個新的WPF項目並複製所有內容。如果這是一個非常大的項目(和你喜歡冒險的感覺),你可能會打開項目文件的XML(卸載項目,然後編輯XML原來的csproj文件)

enter image description here

然後跨過複製ItemGroup部分,並確保新項目目錄下存在相應的源文件。祝你好運!

相關問題