11

基本上,我想我的文件夾中的一個出現在其他文件夾作爲一種類型的「特殊文件夾」上面,類似性質如何有它,即使它是一個文件夾,同樣用的App_Data自己特殊的地方,等Visual Studio解決方案 - 任何方式來創建一個「特殊」文件夾?

這可能嗎?

+0

我通常會創建一個解決方案文件夾。 – AMissico 2011-06-10 08:38:20

+0

您希望在解決方案級別還是項目級別? – Jon 2011-06-10 08:41:55

+0

解決方案文件夾按字母順序排序。 – 2011-06-10 10:39:23

回答

4

默認情況下,Visual Studio不支持添加特殊項目文件夾。屬性文件夾被硬編碼以表現它的行爲方式。

但是,任何代碼都是可能的。你可以建立一個擴展來做到這一點,但這並不簡單。您可能需要搗亂IVsHierarchy甚至實施project subtype

3

基本上,我想我的文件夾 之一出現在其他文件夾作爲 類型的「特殊文件夾」上面,類似於 如何屬性都有它自己的特殊 的地方,即使它是一個文件夾,同樣 與App_Data等

這可能嗎?

是:

  1. 做手工通過IDE
  2. 編寫自己的腳本來 生成/修改*.sln/*.vcproj

對於(1) 「手冊」 上IDE中的解決方案:Solution Explorer,right-click on Solution node ==>Add ==>New Solution Folder

雖然通常文件夾按字母順序排序(我會插入一個前導下劃線以強制您的特殊文件夾頂部),但手動插入MSVS2008的解決方案文件夾會將新文件夾「置於頂部」,即使它應該在按字母順序排序時遇到了問題。但是,Project(稱爲「Filters」)下的文件夾總是按字母順序排序,並且類似地從右鍵單擊添加,然後您可以使用文件名稱globs修改其「篩選器屬性」 ,爲「*.MY_EXTENSION1;*.MY_EXTENSION2」添加一個過濾器glob)。

我們選擇了(2),我們生成了我們自己的*.sln*.vcproj,添加了我們自己的文件夾/過濾器。我還沒有看到網絡上的任何實用程序來幫助(所以我們必須寫自己的)。這些格式對於逆向工程來說不是太難,但它主要是無證的XML,所以你必須進行實驗。有一對夫婦只好的網絡文章解釋這樣一個有什麼文件中:

http://tim.oreilly.com/pub/a/dotnet/excerpt/vshacks_chap1/index.html?page=4

在「光明的一面」,該文件只是XML,所以在發展我們的腳本,我們僅僅通過所做的更改IDE保存並比較了我們想要改變的「差異」。這些更改是我們的腳本在修改文件時插入的內容。因此,如果您手動修改文件,則可以類似地僅使用「diff」文件查看更改的內容,並製作自己的腳本。 (恕我直言,這是最快和最簡單的路線,因爲通常不存在操縱這些文件的工具。)

工具像CMakeQMake產生*.vcproj/*.sln,但並不真正做到自定義文件夾一樣的東西你說。然而,我們也看到他們的輸出,因爲在這些文件中「有多種方法可以做事」,而且這些文件似乎有很多無證的功能來做不同的事情,這些工具在某種程度上被「發現」了(所以你可以嘗試複製其生成的輸出)。

我們發現.NET APIs與這些文件一起工作的工作太多,而且並非真正爲這種類型的操作設計,而是爲YMMV設計的。

+0

>>很大程度上沒有記錄的XML,因此您必須進行實驗<< Visual Studio 2005+的項目和解決方案文件是MSBuild文件。沒有什麼可以破解的。 – AMissico 2011-06-15 19:30:38

+0

>>這些文件似乎有許多無證的功能,用於做不同的巧妙的事情,以某種方式這些工具「發現」<<這些未公開的功能是MSBuild的功能。 – AMissico 2011-06-15 19:31:48

+0

這不適用於VS2010。 VS2008有一個錯誤,導致項目按照他們在項目文件中的順序。我爲自己寫了一個小工具,然後我的團隊再次按照字母順序對.sln文件中的項目進行排序來解決此問題。 VS2010修復了這種行爲,所以如果你想要名稱,你必須使用一些下劃線技巧或類似的東西。 – sprite 2011-06-16 07:10:34

1

雖然沒有簡單的方法來添加Custom Folder,但有一種簡單的方法可以「偷取」Properties自定義文件夾。

  1. 將常規文件夾添加到項目中。例如MyCustomerFolder
  2. 打開proj文件xml。行查找

    <AppDesignerFolder>Properties</AppDesignerFolder> 
    

    <AppDesignerFolder>MyCustomFolder</AppDesignerFolder> 
    
  3. 更換刷新該項目。
  4. 現在你已經有了一個自定義文件夾,它將始終堅持頂部。

    enter image description here

+0

這是一個不錯的竅門,但如果你想添加超過1個特殊文件夾,這是行不通的。 – Matt 2011-06-17 01:22:23

+1

@Matt - 對。但是,問題明確指出「我希望我的一個文件夾出現在其他文件夾上方」。 – 2011-06-17 01:32:20

+0

是的,你說得對。雖然如果他真的需要使用App Designer文件夾並希望保持獨立於他的「特殊文件夾」,也會出現問題。 – Matt 2011-06-17 01:38:14

2

VS 2012有,我只是找到了一個功能,它解決了這個問題對我來說。對VS來說可能並不新鮮。

在項目下使用前導「_」創建一個文件夾(以便首先對其進行排序)。

在文件夾的屬性上將「Namespace Provider」設置爲false。然後VS(或ReSharper?)代碼分析並不會抱怨「命名空間與文件位置不匹配」,這是我激怒的原因,否則它會阻止我走這條路線。

相關問題