在project.json中排除文件夹

时间:2015-06-02 12:02:51

标签: asp.net visual-studio-2015

在新的asp.net 5模板中有一个project.json,你可以在其中排除某些目录。

"exclude": [
    "wwwroot",
    "node_modules",
    "bower_components",
    "dist",
    ".tmp"
]

正如您所看到的,我添加了一些文件夹,例如'dist'和'.tmp',但它们仍然包含在解决方案资源管理器中。关于这个的文档并不多。如何在vs 2015中从项目中删除文件/文件夹?

6 个答案:

答案 0 :(得分:14)

“exclude”属性不会隐藏Visual Studio中的文件夹,也不会使文件夹从解决方案资源管理器中“消失”。

“exclude”属性从编译搜索路径中删除该文件夹。它是对编译器(Roslyn)而不是IDE的指令。作为一个更全面的答案,“project.json”是故意IDE不可知的。这就是为什么projecname.xspoj和project.json都包含项目配置信息的原因。这对于实现更强大的跨IDE和跨平台开发是必要的。

您可以使用简单的练习自行验证此行为。

  1. 将新的类文件(buildfail.cs)添加到现有项目(或 在根项目文件夹中创建一个新项目。
  2. 确保buildfail.cs与其他源文件具有相同的命名空间 project,包含编译错误,位于根目录中。
  3. 你应该在VS中看到构建错误。如果您不手动构建。
  4. 从项目根目录创建一个新文件夹(excludeme)并移动 buildfail.cs到该文件夹​​。你仍然应该有构建错误。
  5. 将excludeme添加到project.json中的exclude属性。应删除构建错误,因为builfail.cs不再位于构建搜索路径中。
  6. 您可能想知道VS使用什么来隐藏解决方案资源管理器显示中的node_packages文件夹。我不确定,它可能不是用户可配置的,但它不是排除属性。注释掉project.json中的node_packages,你会得到构建错误(包恢复失败),但仍然会从解决方案资源管理器中隐藏该文件夹。由于这是IDE特定的行为,人们可能会认为它可能是在projectname.xproj中定义的,但是我没有发现这样的属性,所以此时它似乎是VS的黑盒魔术。

答案 1 :(得分:5)

从Asp.Net 5 beta-8 以及Visual Studio 2015的补充工具更新,您现在可以排除/隐藏在解决方案资源管理器中显示的文件夹。 announcement post概述了有关此更多信息以及其他更改。要隐藏文件或文件夹,请右键单击以显示上下文菜单,然后选择Hide from solution explorer。这会在.xproj文件中创建一个条目:

<ItemGroup>
  <DnxInvisibleContent Include="myhiddenfile.txt" />
</ItemGroup>

另请注意,默认情况下,bower软件包的安装位置发生了变化。以前,Visual Studio中的Asp.Net 5模板会将bower软件包安装到名为bower_components的文件夹中,这种做法对于不使用Visual Studio的Web开发人员来说很熟悉。但是,显然由于开发人员的混淆,这已经改为wwwroot/lib。可以通过编辑bowerrc文件来更改此设置。因此,新的beta-8模板中不存在bower_components文件夹。有关详细信息,请参阅Scott Hanselman撰写的this post

答案 2 :(得分:3)

这可能不太理想,但我能够通过在Windows资源管理器属性对话框中将文件夹标记为隐藏来隐藏Asp.net 5项目中解决方案资源管理器中的文件夹。我将WebStorm使用的.idea文件夹显示出来,因此它被隐藏起来并不算太大。 WebStorm并不介意。

如果文件夹已经存在于解决方案资源管理器中,则该文件夹似乎不会被隐藏。标记它并隐藏它的内容并将其暂时移出项目文件夹。在将其移回之前,请确保它从解决方案资源管理器中消失。它不应该显示回来。重新启动Visual Studio也可以工作,我没有测试过。

答案 3 :(得分:1)

无论是对还是错,这都是我为了让bower_components.sass-cache摆脱困境而采取的措施。在我的情况下,node_modules已经以某种方式被排除在我的项目之外,即使它与gruntfile.js处于同一级别。我仍然不明白为什么它被区别对待。有人知道吗?

首先,我在.bowerrc文件中设置我的位置:

{
  "directory": "../../artifacts/bower_components"
}

然后我在gruntfile.js

中根据需要调整了路径

此外,为了让sass-cache文件夹不受影响,因为我使用grunt-contrib-compass,我使用此选项配置了指南针任务:

  cacheDir: '../../artifacts/.sass-cache',

如果您使用其他sass /指南针工具,还有其他方法可以执行此操作。

<强>结果:

  • 我现在可以在整个项目中搜索文本,而不是在我的库中点击。
  • bower_components.sass-cache超出了源代码管理范围。

答案 4 :(得分:1)

使用最新的Visual Studio,您只需右键单击文件夹/文件,然后选择“从解决方案资源管理器中隐藏”。

这会以这种方式改变“xproj”:

<ItemGroup>
    <DnxInvisibleFolder Include="wwwroot\" />
</ItemGroup>

答案 5 :(得分:0)

使用visual studio 2015查看asp.net 5的状态我只能说他们使用像gulp或grunt这样的任务运行者变得更加困难和不方便。由于我使用Web API 2来管理我的数据,因此我使用bower,gulp和browsersync切换到Visual Studio Code,这已被证明是更简单,更快速,而且杂乱少得多。

制作启动模板:https://github.com/Swiip/generator-gulp-angular

现在您可以使用任何编辑器,您可以清楚地分离前端和后端开发。另外,你可以了解gulp和bower以及VS2015试图为你做的(最小)命令行内容(并且没有多次这样做)。

哦,是的:你不必再排除文件夹了,因为模板有更明智的文件夹结构