复制步骤:
- 堆栈:Windows 10、Visual Studio 2019 专业版、BizTalk Server 2020 开发者版 CU1。
- 在 Visual Studio 中创建一个新的 Biztalk 服务器项目
- 管理 Nuget 包,添加一个 nuget 包。选一个:
- 已知会破坏构建
- 自动法 6.0、6.1、6.2
- nodatime 3.0.5
- Azure.Storage.Blobs 12.9.1
- 已知不会破坏构建
- 自动法 5.2
- 我测试了许多其他人。
- 已知会破坏构建
- F6(构建)或运行 msbuild
就我的测试而言,只要 nuget 包直接列出具有 .net 框架的变体作为依赖项,它就可以工作。如上表所示,仅将 .net 标准和 .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:\co
de\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\autofacRep
ro.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.
此 github 问题中提供了一个 repro zip 包。(起初我认为这是 autofac 的一个特殊问题,但事实并非如此)
我的旧堆栈(windows server 2016、visual studio 2015、biztalk 2016)不受影响。我们在那里的 biztalk 项目中使用 autofac 6.1 没有任何问题。
我觉得这是一个 BizTalk 错误,但我不够聪明,无法找到 Microsoft 允许报告它的方式。
所以最后的问题是,是否有解决方法或错误修复?