tl; dr 我希望在Visual Studio 2012中打开项目后立即运行命令。如何实现此目的?
更长版本
要在Visual Studio中自动构建项目的前端部分,我已在项目文件中指定了此项:
<PropertyGroup Label="NodeJS">
<NodeJSPath>$(MSBuildProjectDirectory)\..\..\tools\nodejs</NodeJSPath>
</PropertyGroup>
<Target Name="BeforeBuild">
<Exec command="$(NodeJSPath)\npm install" />
<Exec command="$(NodeJSPath)\npm run test" />
<Exec command="$(NodeJSPath)\npm run build-all" />
</Target>
这很好,但这意味着在项目运行时不会构建任何sass更改。所以我想要的是在Visual Studio中打开项目之后不断编译SASS,而没有任何后退者需要了解有关Node进程的所有信息。这意味着我需要在项目启动时运行npm install
和npm run watch-sass
。
我知道Visual Studio 2015 在看到npm install
后会立即package.json
,这基本上就是我要复制的内容。
答案 0 :(得分:1)
在Visual Studio中打开项目时执行以下目标:
设计时目标执行
Visual Studio在加载项目时尝试执行具有特定名称的目标。这些目标包括
Compile
,ResolveAssemblyReferences
,ResolveCOMReferences
,GetFrameworkPaths
和CopyRunEnvironmentFiles
。 Visual Studio运行这些目标,以便可以初始化编译器以提供IntelliSense,可以初始化调试器,并且可以解析在解决方案资源管理器中显示的引用。如果这些目标不存在,项目将正确加载和构建,但Visual Studio中的设计时体验将无法完全发挥作用。
您可能希望在目标上粘贴一个Condition以防止它在Build服务器上加载或从命令行构建解决方案时:
<target ... condition="'$(BuildingInsideVisualStudio)' == 'true'">
但升级到Visual Studio 2013或2015可能更容易使用内置于Visual Studio 2015中的新任务运行器,并作为Visual Studio 2013的扩展。哪个可以be extended to support other task runners as well。