BizTalk 2020 添加特定NuGet包后AddBizTalkHiddenReferences报错生成失败如何解决
复现步骤
- 运行环境栈:Windows 10、Visual Studio 2019 专业版、BizTalk Server 2020 开发者版 CU1
- 在Visual Studio中新建BizTalk Server项目
- 打开NuGet包管理器,添加对应NuGet包,可选类别如下:
- 已知会导致生成失败的包版本:autofac 6.0/6.1/6.2、nodatime 3.0.5、Azure.Storage.Blobs 12.9.1
- 已知不会导致生成失败的包版本:autofac 5.2、其余多数测试过的NuGet包
- 按F6执行生成操作,或直接运行
msbuild命令
经测试验证:若NuGet包的依赖项直接包含.NET Framework版本变体,生成可正常完成;若包仅标注.NET Standard和.NET 5作为依赖项,则会触发生成失败问题。
实际报错信息:
PS C:\code\autofacRepro> msbuild Microsoft (R) Build Engine version 16.11.0+0538acc04 for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved. Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch. Build started 8/24/2021 3:01:10 PM. Project "C:\code\autofacRepro\autofacRepro.sln" on node 1 (default targets). ValidateSolutionConfiguration: Building solution configuration "Debug|Any CPU". Project "C:\code\autofacRepro\autofacRepro.sln" (1) is building "C:\code\autofacRepro\autofacRepro.btproj" (2) on node 1 (default targets). C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: The "AddBizTalkHiddenReferences" task failed unexpectedly. [C:\code\autofacRepro\autofacRepro.btproj] C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: System.ArgumentException: String cannot have zero length. [C:\code\autofacRepro\autofacRepro.btproj] C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: at System.Reflection.AssemblyName..ctor(String assemblyName) [C:\code\autofacRepro\autofacRepro.btproj] C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: at Microsoft.VisualStudio.BizTalkProject.BuildTasks.AddBizTalkHiddenReferences.GetAssemblyNamesFromItems(ITaskItem[] items) [C:\code\autofacRepro\autofacRepro.btproj] C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: at Microsoft.VisualStudio.BizTalkProject.BuildTasks.AddBizTalkHiddenReferences.Execute() [C:\code\autofacRepro\autofacRepro.btproj] C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [C:\code\autofacRepro\autofacRepro.btproj] C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets(190,9): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() [C:\code\autofacRepro\autofacRepro.btproj] Done Building Project "C:\code\autofacRepro\autofacRepro.btproj" (default targets) -- FAILED. Done Building Project "C:\code\autofacRepro\autofacRepro.sln" (default targets) -- FAILED. Build FAILED.
问题复现压缩包可在公开的Autofac项目Issue记录中获取,最初排查时误以为是autofac专属问题,实际为通用问题。
此前使用旧环境栈(Windows Server 2016、Visual Studio 2015、BizTalk 2016)未出现该问题,该环境下BizTalk项目中使用autofac 6.1完全正常。
目前判断该问题为BizTalk本身的Bug,但暂未找到向微软反馈问题的官方渠道,咨询是否有对应的临时规避方案或官方修复补丁?
内容的提问来源于stack exchange,提问作者fabsenet
相关产品推荐
相关产品推荐

