Команда Dotnet Cli Publish против Visual Studio Publish. - PullRequest
1 голос
/ 08 апреля 2019

Я настраиваю конвейер сборки devure для Azure для веб-приложения .NET core 2.2, которое включает Angular, и один из шагов, который он выполняет, - публикация dotnet.Однако конечный результат не тот, который я ожидал, по сравнению с запуском публикации непосредственно из 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 не выполнялась с правильной командой.Посмотрев журнал сборки, он просто запустил ng build, не включая дополнительные флаги для настройки конкретной конфигурации.

Итак, чтобы подтвердить это, я запустил командную строку

dotnet publish -c Test

, и, конечно же, вывод указывает, что он запускает сборку ng, без видимого использования того, что было в файле csproj.

Как я могу получитьмоя команда npm для получения значений конфигурации, подобных тем, которые содержатся в файле csproj, но когда публикуется dotnet?

1 Ответ

1 голос
/ 09 апреля 2019

Вместо того, чтобы пытаться заставить параметры работать через MSBuild, я бы порекомендовал перенести ваши команды npm в package.json следующим образом.

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

А затем с помощью csproj просто запустить npm run buildTest и npm run buildProd и т. д.

...