dotnet cli publish 命令与 visual studio publish

dotnet cli publish command vs visual studio publish

我正在为 .NET 核心 2.2 Web 应用程序设置 Azure devops 构建管道,其中包括 Angular 并且 运行s 的其中一个步骤是 dotnet publish。但是,与 运行 直接从 VS 2017 发布时相比,最终结果并不是我所期望的。

作为 运行 自定义 npm 命令以针对特定环境的一种方式。所以在我的 csproj 文件中我有这个

  <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <!-- Use conditional builds based on build target setting eg.  debug, dev, prod etc -->
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build " Condition=" '$(Configuration)' == 'Debug' " />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build --prod false --configuration=dev" Condition=" '$(Configuration)' == 'Test' " />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build --prod true --configuration=prod" Condition=" '$(Configuration)' == 'Release' " />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr --configuration=prod" Condition=" '$(BuildServerSideRenderer)' == 'true' And  '$(Configuration)' == 'Release' " />

但是,devops 构建不是 运行ning 正确的命令。查看构建日志后,它只是 运行ning ng 构建,不包括针对特定配置的额外标志。

然后为了确认这一点,我 运行 在命令行

dotnet publish -c Test

,果然,输出表明它是 运行 ng 构建,似乎没有使用 csproj 文件中的内容。

然后如何让我的 npm 命令获取配置值,就像 csproj 文件中的配置值一样,但是当 dotnet publish 运行s 时?

我建议不要尝试通过 MSBuild 获取参数,而是将您的 npm 命令移动到 package.json 中。

"scripts": {
"buildTest": "npm run build --prod false --configuration=dev",
"buildProd": "npm run build --prod true --configuration=prod"
}

然后使用 csproj 仅 运行 npm run buildTestnpm run buildProd 等等。