11

基本上,我希望我的一个文件夹作为一种“特殊文件夹”出现在其他文件夹上方,类似于 Properties 有它自己的特殊位置,即使它是一个文件夹,与 App_Data 等相同。

这可能吗?

4

4 回答 4

4

默认情况下,Visual Studio 不支持添加特殊项目文件夹。Properties 文件夹是硬编码的,可以按照它的方式运行。

但是,使用代码一切皆有可能。您可以构建一个扩展来执行此操作,但这并不简单。您可能需要弄乱IVsHierarchy甚至实现项目子类型

于 2011-06-10T15:08:26.257 回答
3

基本上,我希望我的一个文件夹作为一种“特殊文件夹”出现在其他文件夹上方,类似于 Properties 有它自己的特殊位置,即使它是一个文件夹,与 App_Data 等相同。

这可能吗?

是的:

  1. 通过 IDE 手动执行
  2. 编写您自己的脚本来生成/修改您的*.sln/*.vcproj

对于 IDE 中解决方案的 (1)“手册”: Solution Explorerright-clickSolution node==> Add==>上New Solution Folder

虽然通常文件夹按字母顺序排序(我会插入一个前导下划线以将您的特殊文件夹强制到顶部),但在我的 MSVS2008 上手动插入的解决方案文件夹将新文件夹留在“顶部”,即使它应该在按字母顺序排列。但是,a 下的文件夹Project(称为“ Filters”)始终按字母顺序排序,并通过右键单击类似地添加,然后您可以使用文件名 glob 修改它们的“过滤器属性”,以获得您想要的内容(例如,添加" *.MY_EXTENSION1;*.MY_EXTENSION2")的过滤器全局。

我们选择了 (2),并生成了我们自己的*.slnand *.vcproj,添加了我们自己的文件夹/过滤器。我在网上没有看到任何实用程序来帮助解决这个问题(所以我们必须自己编写)。对格式进行逆向工程并不难,但它主要是未记录的 XML,因此您必须进行试验。只有几篇很好的网络文章解释了文件中的内容,比如这个:

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

在“好的一面”,文件只是 XML,所以在开发我们的脚本时,我们只是通过 IDE 进行更改、保存并比较“差异”以获得我们想要的更改。这些更改是我们修改文件时脚本插入的内容。因此,如果您手动修改文件,您可以类似地仅“ diff”查看文件更改的内容,并制作自己的脚本。(恕我直言,这是最快和最简单的方法,因为通常不存在用于操作这些文件的工具。)

CMakeQMakegenerate *.vcproj/这样的工具*.sln,但并没有像你说的那样真正做文件夹自定义的事情。但是,我们也会查看它们的输出,因为在这些文件中“做事的方法不止一种”,而且这些文件似乎有许多未记录的功能,用于执行这些工具以某种方式“发现”的不同聪明的事情(所以你可以尝试复制他们生成的输出)。

我们发现 .NET API 处理这些文件的工作量太大,而且并不是真正为这种类型的操作而设计的,而是 YMMV。

于 2011-06-14T21:22:25.373 回答
2

VS 2012 有一个我刚刚发现的功能,它为我解决了这个问题。对 VS 来说可能并不新鲜。

在项目下创建一个带有前导“_”的文件夹(首先对其进行排序)。

在文件夹的属性中,将“命名空间提供程序”设置为 false。

VS(或 ReSharper?)代码分析不会抱怨“命名空间与文件位置不匹配”,这对我来说是恼火的根源,否则会阻止我走这条路。

于 2012-10-03T13:58:10.097 回答
1

虽然没有简单的添加方法Custom Folder,但有一种简单的方法可以“窃取”Properties自定义文件夹。

  1. 将常规文件夹添加到项目中。例如MyCustomerFolder.

  2. 打开项目文件 xml. 找线

     <AppDesignerFolder>Properties</AppDesignerFolder>
    

    用。。。来代替

     <AppDesignerFolder>MyCustomFolder</AppDesignerFolder>
    
  3. 重新加载项目。

  4. 现在您已经有了一个自定义文件夹,它将始终位于顶部。

    在此处输入图像描述

于 2011-06-17T01:15:57.147 回答