0

复制步骤:

  • 堆栈: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 允许报告它的方式。

所以最后的问题是,是否有解决方法或错误修复?

4

1 回答 1

0

我用我自己的包裹之一吃过这个。这个包的目标是 .NET Standard 2.0。我必须在类库中专门添加 .NET Framework 4.8(在我的情况下)作为目标框架并为其重新创建包。

对于公共包,您可能希望创建一个 PR 或创建一个 fork 以包含 .NET Framework 的目标。然后,您的 BizTalk 项目需要引用 .NET Framework 程序集而不是 .NET Standard 程序集。

于 2021-08-31T14:44:34.620 回答