基本上,我想我的文件夾中的一個出現在其他文件夾作爲一種類型的「特殊文件夾」上面,類似性質如何有它,即使它是一個文件夾,同樣用的App_Data自己特殊的地方,等Visual Studio解決方案 - 任何方式來創建一個「特殊」文件夾?
這可能嗎?
基本上,我想我的文件夾中的一個出現在其他文件夾作爲一種類型的「特殊文件夾」上面,類似性質如何有它,即使它是一個文件夾,同樣用的App_Data自己特殊的地方,等Visual Studio解決方案 - 任何方式來創建一個「特殊」文件夾?
這可能嗎?
默認情況下,Visual Studio不支持添加特殊項目文件夾。屬性文件夾被硬編碼以表現它的行爲方式。
但是,任何代碼都是可能的。你可以建立一個擴展來做到這一點,但這並不簡單。您可能需要搗亂IVsHierarchy
甚至實施project subtype。
基本上,我想我的文件夾 之一出現在其他文件夾作爲 類型的「特殊文件夾」上面,類似於 如何屬性都有它自己的特殊 的地方,即使它是一個文件夾,同樣 與App_Data等
這可能嗎?
是:
*.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
」文件查看更改的內容,並製作自己的腳本。 (恕我直言,這是最快和最簡單的路線,因爲通常不存在操縱這些文件的工具。)
工具像CMake
和QMake
產生*.vcproj
/*.sln
,但並不真正做到自定義文件夾一樣的東西你說。然而,我們也看到他們的輸出,因爲在這些文件中「有多種方法可以做事」,而且這些文件似乎有很多無證的功能來做不同的事情,這些工具在某種程度上被「發現」了(所以你可以嘗試複製其生成的輸出)。
我們發現.NET APIs與這些文件一起工作的工作太多,而且並非真正爲這種類型的操作設計,而是爲YMMV設計的。
>>很大程度上沒有記錄的XML,因此您必須進行實驗<< Visual Studio 2005+的項目和解決方案文件是MSBuild文件。沒有什麼可以破解的。 – AMissico 2011-06-15 19:30:38
>>這些文件似乎有許多無證的功能,用於做不同的巧妙的事情,以某種方式這些工具「發現」<<這些未公開的功能是MSBuild的功能。 – AMissico 2011-06-15 19:31:48
這不適用於VS2010。 VS2008有一個錯誤,導致項目按照他們在項目文件中的順序。我爲自己寫了一個小工具,然後我的團隊再次按照字母順序對.sln文件中的項目進行排序來解決此問題。 VS2010修復了這種行爲,所以如果你想要名稱,你必須使用一些下劃線技巧或類似的東西。 – sprite 2011-06-16 07:10:34
雖然沒有簡單的方法來添加Custom Folder
,但有一種簡單的方法可以「偷取」Properties
自定義文件夾。
MyCustomerFolder
。打開proj文件xml。行查找
<AppDesignerFolder>Properties</AppDesignerFolder>
與
<AppDesignerFolder>MyCustomFolder</AppDesignerFolder>
現在你已經有了一個自定義文件夾,它將始終堅持頂部。
VS 2012有,我只是找到了一個功能,它解決了這個問題對我來說。對VS來說可能並不新鮮。
在項目下使用前導「_」創建一個文件夾(以便首先對其進行排序)。
在文件夾的屬性上將「Namespace Provider」設置爲false。然後VS(或ReSharper?)代碼分析並不會抱怨「命名空間與文件位置不匹配」,這是我激怒的原因,否則它會阻止我走這條路線。
我通常會創建一個解決方案文件夾。 – AMissico 2011-06-10 08:38:20
您希望在解決方案級別還是項目級別? – Jon 2011-06-10 08:41:55
解決方案文件夾按字母順序排序。 – 2011-06-10 10:39:23