gpt4 book ai didi

.net - VS2017 .Net Core(完整框架)项目的构建后事件获取 $(ConfigurationName) 的空字符串

转载 作者:行者123 更新时间:2023-12-03 09:09:29 31 4
gpt4 key购买 nike

我正在为一个新项目设置开发环境。它是一个 Web API 项目,通过静态文件为 @Angular 项目提供服务。为了促进这一点,在构建后,我运行 Angular cli 的构建函数,然后将文件复制到 wwwroot 中。这一切都工作正常。

但是,我希望能够根据项目处于 Debug模式还是 Release模式来运行两个不同的 npm 脚本。在我的构建后脚本中,我尝试了以下方法:

if "$(ConfigurationName)" == "Debug"
(
npm run build
)
else if "$(ConfigurationName)"=="Release"
(
npm run prod
)

但是我得到

The command "if "" == "Debug"
(
npm run build
)
else if ""=="Release"
(
npm run prod
)" exited with code 255.

看起来没有为 ConfigurationName 提供任何值。我尝试过调试和 Release模式并得到相同的错误。 VS 2017 中的 ConfigurationName 变量是否发生了变化?

编辑:但是,如果我单击“编辑构建后”,然后单击“宏”,我可以看到 here ConfigurationName 有一个值。只是我的脚本看不到它

最佳答案

  1. $(Configuration) 可能适用于您的情况,因为它在构建过程中尽早被赋予了值。

  2. 构建前和构建后事件实际上不适用于“基于 SDK”的项目(无需修改),因为在评估构建事件属性时,大多数属性并未定义。请参阅https://github.com/dotnet/project-system/issues/1569了解更多详情。

我建议在您的项目中执行以下操作:

<Project Sdk="...">
<!-- other content -->
<Target Name="RunNpmBuild" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' != 'Release'">
<Exec Command="npm run build" />
</Target>
<Target Name="RunNpmProd" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' == 'Release'">
<Exec Command="npm run prod" />
</Target>
</Project>

请注意,在 1.0.* CLI 中,构建期间生成的以前不存在的文件可能不会发布 - 请参阅 https://github.com/aspnet/websdk/issues/114寻求解决方法。

关于.net - VS2017 .Net Core(完整框架)项目的构建后事件获取 $(ConfigurationName) 的空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44024929/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com