在发布ASP.NET MVC 5.0项目之前执行'npm install'

时间:2018-03-02 09:45:05

标签: asp.net-mvc asp.net-mvc-5 msbuild npm-install

我有一个ASP.NET MVC 5.0应用程序,我已经引入了一个package.json文件来管理我项目中的JavaScript包(我在BundleConfig.cs中引用了node_modules路径来引入包)。 / p>

当我下载新版本的项目并构建它时,Visual Studio似乎会自动检索NPM包(我假设Visual Studio 2017内置了对此的支持)。

但是,当我发布我的应用程序时,不会生成node_modules文件夹。我将以下构建目标添加到我的web .csproj文件中,希望这将解决发布的依赖关系:

  <Target Name="PrepublishScript" AfterTargets="PrepareForPublish">
    <Exec Command="npm install"/>
  </Target>

但是,该命令似乎没有被执行。

npm命令肯定是我路径的一部分(即当我打开一个命令窗口并键入npm时它会执行)。

为什么这不起作用的任何想法?

这甚至是一种合理的方法吗?

1 个答案:

答案 0 :(得分:0)

这对我有用:

<Target Name="CustomPostPublishActions" AfterTargets="GatherAllFilesToPublish"> 
   <Exec Command="npm install" WorkingDirectory="$(PublishUrl)"></Exec>
</Target>

$(PublishUrl)似乎是一个内置变量,我用它来确保命令是在我发布文件的文件夹中执行的。

有一点需要注意的是,当使用IIS Web Deploy进行一键式发布时,这并没有什么帮助,我不知道我需要做些什么。