我有一个带有SPA的ASP.NET Core6.0 WebApi解决方案。默认模板在默认情况下通过运行下面的PublishAngular
目标来生成SPA。
WebApi.csproj文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<!-- ... -->
<!-- .NET Core Web API is being build here-->
<!-- ... -->
<Target Name="PublishAngular" AfterTargets="ComputeFilesToPublish">
<!-- ... -->
<!-- SPA is getting built here-->
<!-- ... -->
</Target>
</Project>
我正在将WebApi迁移到Docker,并希望最终完全脱离SPA。但是这是一个很长的过程,所以目前我希望有一种方法来指定是否要使用build命令行有条件地构建SPA。
我使用了一个名为DOCKER_BUILD的预处理指令,所以在我的C#文件中执行如下操作:
#if !DOCKER_BUILD
services.ConfigureSpa();
#endif
我的问题是:
PublishAngular
目标的最佳方法是什么?我的构建命令行如下所示:
dotnet publish -c Release -o out
我尝试将DOCKER_BUILD传递为:
dotnet publish -c Release -o out /p:DOCKER_BUILD
并像这样修改SPA构建目标:
<Target Name="PublishAngular" AfterTargets="ComputeFilesToPublish" Condition="!DOCKER_BUILD">
但没有取得多大的成功。我做错了什么?
发布于 2022-04-15 00:49:52
它的工作原理如下。构建命令行:
dotnet msbuild -target:Publish /p:DefineConstants=DOCKER_BUILD
csproj目标条件:
<Target Name="PublishAngular" AfterTargets="ComputeFilesToPublish" Condition="!$(DefineConstants.Contains('DOCKER'))">
DefineConstants
参数也适用于C#文件中的代码,因此这也适用于:
#if DOCKER_BUILD
// some docker specific code
#endif
https://stackoverflow.com/questions/71818999
复制相似问题