0

我有一个引用Microsoft.Azure.Functions.Worker.Sdk版本 1.0.4 的 Azure Functions v3(dotnet 隔离)C# 项目。当 NCrunch 尝试构建此项目时,它会失败并显示以下消息:..\..\..\..\..\..\program files (x86)\microsoft visual studio\2019\professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets (1150, 7): The target "NCrunchPrepareForBuild" does not exist in the project.如果我删除包引用,则构建成功。

有条件地禁用引用<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.0.4" OutputItemType="Analyzer" Condition="'$(NCrunch)' != '1'" />不起作用。奇怪的是,如果我将其更改为Condition="'$(NCrunch)' == '1'"它确实有效,这表明$(NCrunch)在构建过程中此时尚未设置该属性。

错误消息引用的行如下所示:

<Target
      Name="PrepareForBuild"
      DependsOnTargets="$(PrepareForBuildDependsOn)">
4

1 回答 1

1

正如arkiaconsultingClement所建议的:

仅针对 NCrunch 构建触发的路径

 <Target Name="CopyAzureFunctionOutput" AfterTargets="_GenerateFunctionsPostBuild" Condition="'$(NCrunch)' == '1'">
    <Exec Command="xcopy /y &quot;$(OutDir)\bin&quot; &quot;$(OutDir)&quot;" />
  </Target>

要禁用目标加载,您可以ExcludeRestorePackageImports在引用 Azure Function 包的项目中将该属性设置为 true,如下所示:

<PropertyGroup Condition="'$(NCrunch)' == '1'">
<ExcludeRestorePackageImports>true</ExcludeRestorePackageImports>
</PropertyGroup>

这样,目标不会被触发,文件不会被移动到 bin 文件夹中,并且 NCrunch 可以正常工作。

可以参考Azure function:build issue

如果上述建议不起作用,那么您可以在NCrunch 论坛上提出相同的问题,并在 GitHub 上打开一个问题:azure-functions-vs-build-sdk

于 2021-09-23T09:59:30.463 回答