将完全可用的解决方案下载到第二台机器后,\bin 文件夹中缺少 DLL 文件

Missing DLL files in \bin folder after downloading fully-working solution to a second machine

我正在尝试从 Azure DevOps(以前是 VisualStudio.com)下载并 运行 工作分支到第二台机器上。

主机(VS2017 Pro):

  1. SolutionABC 构建并运行完美
  2. 分支到 SolutionABC-Branch 有一些小的变化(在这个问题之外)
  3. SolutionABC-Branch 构建并运行完美
  4. SolutionABC-Branch 签入

第二台机器(VS2019 Pro):

  1. SolutionABC 下载、构建和运行完美
  2. SolutionABC-Branch 下载,但不会构建:

通过“错误”对话框追溯错误,我得到:

Warning BC40056

Namespace or type specified in the Imports 'Microsoft.IdentityModel.Clients.ActiveDirectory' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.

快速 Google 搜索引导我 here,所以按照说明确实存在一些问题:

首先,请问我该如何解决?

其次,当从中分支出来的父解决方案 运行 在这台机器上完美运行时,这是如何发生的?

更新

许多项目引用(对解决方案中的其他项目以及对 Microsoft DLL 的引用)似乎也丢失了。无奈之下,我将 Microsoft DLL 从初始项目复制到分支项目。这已解决问题,但我的问题仍未得到解答...

解决方案

问题原来是VSTS/TFS的file/path长度限制。将我的本地存储库重新定位到更短的目录名称(例如 C:\TFS)解决了这个问题。

如何解决:

使用 Microsoft.IdentityModel.Clients.ActiveDirectory

的 nuget 包

这是什么原因造成的:

我敢打赌,这指出了这两台机器之间的差异。查看引用属性中列出的框 1 上的目录,并检查程序集是否存在。验证它在方框 2 上的相同路径中。还要检查两台计算机上的 GAC。 VS/MSBuild 尝试在寻找这些程序集时尽可能聪明,如果提示路径说的是一件事,但在那里找不到,但程序集已注册,构建将顺利进行。

Missing DLL files in \bin folder after downloading fully-working solution to a second machine

AFAIK,这个问题应该与 TFS/Azure Devops 无关,它更多地与小的更改或环境设置有关。尽管您认为它是(在当前问题之外),但它可能会导致在您无法 see/think 的地方出现此问题。

要解决此问题,我们需要对其进行故障排除:

由于分支的父解决方案在第二台机器(VS2019 Pro)上运行完美,我们可以创建一个新分支而无需进行小改动,然后检查是否仍然存在此问题?

然后,添加这些更改并检查您是否再次遇到此问题。

注意:尝试从第二台机器上的 SolutionABC-Branch 解决方案中删除引用,然后将它们添加回去以检查此问题是否已解决。

希望这对您有所帮助。