使用Visual Studio 2015发布Gulp目标文件

使用Visual Studio 2015发布Gulp目标文件,gulp,publish,visual-studio-2015,Gulp,Publish,Visual Studio 2015,在新的Visual Studio 2015和Web Essentials插件中,他们删除了编译某些文件的功能,例如更少的文件。相反,他们建议使用吞咽任务 虽然我对这一决定表示赞赏,并理解如何配置Gulp以编译更少的文件,但由于这不是ASP.NET 5应用程序,因此新文件不会自动添加到项目中,因此在使用VS2015的发布功能时不会被复制 在我看来,复制这些文件的唯一方法是手动将它们添加到项目中。如果您创建了一个编译**/*的任务,这似乎是一个错误,但与直觉相反。您不必在整个项目中查找生成的css文

在新的Visual Studio 2015和Web Essentials插件中,他们删除了编译某些文件的功能,例如更少的文件。相反,他们建议使用吞咽任务

虽然我对这一决定表示赞赏,并理解如何配置Gulp以编译更少的文件,但由于这不是ASP.NET 5应用程序,因此新文件不会自动添加到项目中,因此在使用VS2015的发布功能时不会被复制

在我看来,复制这些文件的唯一方法是手动将它们添加到项目中。如果您创建了一个编译**/*的任务,这似乎是一个错误,但与直觉相反。您不必在整个项目中查找生成的css文件并手动添加它们


我只是做错了什么,还是这就是它现在的工作方式?

不要手动添加文件,在项目文件中添加目标文件非常容易。我们就是这样做的,我们还使用gulp rev包动态修改文件名(这样它们就不会被浏览器缓存)。下面是.csproj文件中的BeforeBuild目标的样子:

<Target Name="BeforeBuild">
    <Exec Command="BeforeBuild.bat" WorkingDirectory="$(ProjectDir)" />
    <ItemGroup>
        <Content Include="Scripts\Output\**\*.js" />
        <Content Include="Content\**\output\**\*.css" />
    </ItemGroup>
</Target>


在我们的例子中,当我们发布从Scripts\Output\all\u folders\生成的所有js文件时,也会发布,即使它们不在csproj中(生成的css文件也是如此)

对于那些喜欢使用“Web Essentials”方法编译更少的Sass和CoffeeScript文件的人,Mads Kristensen发布了一个新的VS 2015扩展名为。试试看。另请参阅从Web Essentials中删除的附加功能的扩展名。

BuildBefore.bat文件的作用是什么?运行“吞咽”任务?我想我们将不得不改变我们的工作方式,但我们已经习惯于只添加一个新的.less文件(无论在项目中的何处),并且它可以正常工作,使用上面的方法,我们需要让我们的头脑明白,所有较少的文件都将被编译到一个特定的输出文件夹中。我们可能也需要更多的Gulp经验:)感谢您的帮助是的,在BuildBefore.bat中,我们有恢复npm和bower包的命令,也有运行Gulp任务的命令。是的,它改变了您习惯的方式,因为实际上编译的结果应该用一个类似于gulp-inject的任务注入到您的webform/view中。那么,假设您不使用task Runner Explorer绑定来绑定gulp任务以生成事件,我是否正确?由于您已经在使用BeforeBuild.bat文件进行此操作。您是对的,主要原因是我们在TFS构建(使用MSBuild)中也需要此功能。自去年以来,您是否遇到了一种更简单的方法来实现您的答案所提供的功能,或者是使用自定义目标包含bower安装的文件的唯一方法。另外,您是否可以发布BeforeBuild.bat,以便我们了解如何恢复npm/grunt,或者在更高版本的vs中不再需要它?我的团队正在使用vs 2015,我希望gulp任务运行时,在他们对我的项目进行签出后,不必进行任何手动运行。