1

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

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

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

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

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

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

4

1 回答 1

3

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

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

所以你的目标看起来像:

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

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

于 2019-06-14T05:10:10.887 回答