blazor - 如何配置 NCrunch 以便它可以构建 Blazor 项目
问题描述
当 NCrunch(版本 4.2.0.7)尝试构建 Blazor 项目(版本 3.0.0-preview9)时,会产生以下错误:
packages\microsoft.aspnetcore.blazor.build\3.0.0-preview9.19465.2\targets\Blazor.MonoRuntime.targets (441, 5):命令“dotnet”C:\Users\Rodolfo.nuget\packages\microsoft.aspnetcore .blazor.mono\3.0.0-preview9.19462.2\build\netstandard1.0../../tools/illink/illink.dll" -l none --disable-opt unreachablebodies --verbose --strip-security true --exclude-feature com --exclude-feature sre -v false -c link -u link -b true -d (...这里有很多文件...)以代码 -532462766 退出。
如何让 NCrunch 构建 Blazor 项目?
免责声明:我在网上没有找到一个答案后写这个问题,包括 SO。我已经找到了解决方案并打算自己回答这个问题,以便 - 希望 - 帮助其他人。
解决方案
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 构建项目。
推荐阅读
- java - 如何在 Twilio Android sdk 中集成多参与者超过 2 个视频会议
- python - 将整数从一个 def 编辑到另一个
- smtp - 在 GITLAB 中使用 BLAT 服务
- python - 检查是否有 4 个垂直水平或对角线的项目结束连接 4 游戏的最佳方法是什么
- laravel - 如何在laravel中将集合变成数组
- postgresql - PostgreSQL 中文本列更新的性能
- javascript - 运行任务后如何终止CircleCI?
- matlab - 使用 Matlab 创建 PDF
- android - Flutter 后台任务
- python - os.walk() 更通用的 os.path.basename?