发布Asp.Net Core应用程序时传递变量

时间:2019-09-09 18:30:36

标签: asp.net-core msbuild asp.net-core-2.2

我在ASP.NET Core 2.2项目文件中具有以下内容:

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
  <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build --prod" />
</Target>

发布应用程序时,使用dotnet publish代替:

npm run build --prod

我需要指定是否应该运行:

npm run build --prod.machine-1

npm run build --prod.machine-2

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您需要致电dotnet publish,而不是致电dotnet msbuild /t:publish。这两个基本相同,但是第二个使您可以访问MSBuild的所有命令行参数。

然后,您可以使用msbuild(或简称为/property)参数在对/p的调用中设置任意properties。然后,您可以将目标更改为以下形式:

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
  <PropertyGroup>
    <NPMMachine Condition=" '$(NPMMachine)' != '' ">--prod</NPMMachine>
  <PropertyGroup>
  <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build $(NPMMachine)" />
</Target>

这为目标提供了默认的NPMMachine --prod,但如果需要,您可以覆盖NPMMachine

如果调用dotnet msbuild /t:publish,则目标将以--prod参数运行。 如果要覆盖npm参数,则可以使用dotnet msbuild /t:publish /p:NPMMachine=--prod.machine-1调用msbuild。