TL;博士
- 转到 Blazor 项目的 NCrunch 配置。
- 添加一个名为BlazorLinkOnBuild的自定义构建属性(从 3.2.0-preview3 开始,重命名为BlazorWebAssemblyEnableLinking),其值为false。
完整的解释
......以防细节发生变化。
在错误消息中提到的 .targets 文件的第 441 行中,您将找到导致错误的 Exec 命令:
<Exec Command="dotnet "$(MonoLinkerPath)" $(_BlazorLinkerAdditionalOptions) @(_BlazorFolderLookupPaths, ' ') -o "$(BlazorIntermediateLinkerOutputPath)" @(_BlazorAssemblyDescriptorFiles, ' ') @(_BlazorAssembliesToLink, ' ')" />
此命令包含在以下目标中:
<Target
Name="_LinkBlazorApplication"
Condition="$(_BlazorShouldLinkApplicationAssemblies) != ''"
Inputs="$(BlazorBuildLinkerInputsCache);
@(IntermediateAssembly);
@(_BlazorDependencyInput);
@(BlazorLinkerDescriptor)"
Outputs="$(BlazorIntermediateLinkerResultFilePath)"
>
这意味着仅当 _BlazorShouldLinkApplicationAssemblies 属性不为空时才会执行 Exec。在 .targets 文件中搜索设置此内部属性的位置,您将找到此 PropertyGroup(第 152 行):
<PropertyGroup Label="Build properties">
<_BlazorShouldLinkApplicationAssemblies Condition="$(BlazorLinkOnBuild) == 'false'"></_BlazorShouldLinkApplicationAssemblies>
<_BlazorShouldLinkApplicationAssemblies Condition="$(BlazorLinkOnBuild) == 'true'">true</_BlazorShouldLinkApplicationAssemblies>
<_BlazorBuiltInBclLinkerDescriptor>$(MSBuildThisFileDirectory)BuiltInBclLinkerDescriptor.xml</_BlazorBuiltInBclLinkerDescriptor>
</PropertyGroup>
这就是为什么将BlazorLinkOnBuild(从 3.2.0-preview3 开始,重命名为BlazorWebAssemblyEnableLinking)设置为false允许 NCrunch 构建项目。