有没有办法在 visual-studio 中 运行 aspnet 核心应用程序时连接 npm 任务?

Is there a way to hookup npm task while running aspnet core application in visual-studio?

我有一个 Asp.Net 核心应用程序,其中集成了 WebpackDevMiddleware。该 WebpackDevMiddleware 服务于使用 NPM 命令构建的客户端资产。现在我想在项目运行时同时构建和服务这些客户端资产 (JS/CSS)。

我认为最明显的解决方案是在项目中添加(预构建事件命令行)并提供 npm 命令。这样做的缺点是,当我使用 dotnet core sdk 构建我的应用程序的 docker 图像时,它会请求它没有的节点环境。

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
   <Exec Command="npm run build-webpack" />
</Target>

这是我的 docker 构建步骤,无法识别与 dotnet 关联的 NPM 命令 build/publish

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 as builder
WORKDIR /app
COPY . .
RUN dotnet publish -c $ENVIRONMENT -o ../out

现在我真正想要的是,我的目标只在 运行 应用程序在 VS 中执行。条件可能有效,但它可能是什么?

Now what I actually want is, my target only to be executed while running application in VS. A condition might work but what could it be?

检查this document:在Visual Studio内部构建时,属性 $(BuildingInsideVisualStudio)设置为true。这可以在您的项目或 .targets 文件中使用,以导致构建行为不同。

因此您的目标将如下所示:

<Target Name="PreBuild" Condition="'$(BuildingInsideVisualStudio)'=='true'" BeforeTargets="PreBuildEvent">
   <Exec Command="npm run build-webpack" />
</Target>

那么这个目标只会在VS中构建时执行。