为什么 Jenkins 找不到这个 .NET AssemblyFoldersEx 注册表项?

Why can't Jenkins find this .NET AssemblyFoldersEx registry key?

所以我有一个项目可以在我的开发机器上正常构建,但不能在我的 CI 服务器 (Jenkins) 上构建。

Jenkins 找不到我的主要互操作程序集,即使我已经从我的机器上复制了各种文件夹以使其可用。

在我的机器上,一切正常,我可以打开 Visual Studio 的 "diagnostic" 级输出选项,我可以看到它如何确定这些 PIA 的位置。 ..

Primary reference "Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
  Resolved file path is "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll".
  Reference found at search path location "{Registry:Software\Microsoft\.NETFramework,v4.6.1,AssemblyFoldersEx}".

看到上面引用的注册表项了吗?当我进入我的注册表时.. 我 可以 找到荨麻疹:

每个蜂巢都有几个键,比如

但是我在上面粘贴的构建输出片段中似乎没有看到 v4.6.1 密钥。如果有什么方法可以发现这个 and/or,更好的方法来配置 Jenkins 以便它可以正确引用 Microsoft.mshtml.dll 我将非常感激。

经过漫长而艰苦的搜索,我发现我的开发者盒子上有一些 "PIA" redist.exe,位于以下位置:

C:/Program Files (x86)/Common Files/Merge Modules

我有几个,因为我的机器上安装了多个版本的 Visual Studio。我确定我可能只需要 运行 其中一个。无论如何,我双击了每个 .exe(我的 CI 服务器上有一个 window 正在达到峰值我的开发工作站)并将每个安装到我的 Jenkins 服务器上。

问题已解决!