NCrunch无法构建引用Microsoft.Azure.Functions.Worker.Sdk的Azure Functions项目
解决方案
该问题根因是Microsoft.Azure.Functions.Worker.Sdk 1.0.4版本的MSBuild逻辑加载时机早于NCrunch全局属性的注入时机,你写在PackageReference上的条件判断无法正确识别NCrunch构建环境,且该版本SDK会强制修改PrepareForBuildDependsOn属性注入不存在的目标,导致构建报错。可任选以下一种方案解决:
方案1:补充空目标(最简便)
直接在你的.csproj项目文件末尾、</Project>标签之前添加如下配置,补全缺失的空目标即可,不会影响正常的Azure Functions构建发布流程:
<Target Name="NCrunchPrepareForBuild" />
方案2:提前声明构建环境判断规则
在项目根目录新建Directory.Build.props文件,该文件会在所有包逻辑加载前执行,提前完成NCrunch环境识别:
<Project> <PropertyGroup> <IsNCrunchBuild Condition="'$(NCrunch)' == '1'">true</IsNCrunchBuild> </PropertyGroup> </Project>
再修改项目中的包引用条件,使用提前声明的属性做判断:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.0.4" OutputItemType="Analyzer" Condition="'$(IsNCrunchBuild)' != 'true'" />
方案3:升级SDK版本
将Microsoft.Azure.Functions.Worker.Sdk升级到1.2.0及以上版本,该版本微软已经修复了第三方测试构建工具的目标冲突问题,无需额外配置即可兼容NCrunch构建。
内容的提问来源于stack exchange,提问作者Blisco
相关产品推荐
相关产品推荐

