jenkins - Jenkins MSBUILD 插件引发“无法找到程序集 CrystalDecisions.CrystalReports.Engine...”
问题描述
此问题发生在在 Windows Server 2012 上运行的 Jenkins v2.249.3 构建服务器上,并且安装了 MBUILD 插件用于构建 VS.NET 2013 解决方案。此解决方案引用了 Crystal Reports 运行时库以呈现 Crystal Reports 查看器。
当 Jenkins 在机器上启动它找不到的 MSBUILD 步骤时,就会CrystalDecisions.CrystalReports.Engine
出现CrystalDecisions.Shared
问题CrystalDecisions.Windows.Forms
。
我已经CRRuntime_32bit_13_0_18.msi
从 Crystal 站点安装了 Crystal Reports 运行时,但在 Jenkins 控制台中出现错误,例如:
Primary reference "CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL". C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\Users\Jenkins\AppData\Local\Jenkins\.jenkins\workspace\myaspnetapp\crystalLibrary\CrystalLibrary.csproj]
也:
For SearchPath "{TargetFrameworkDirectory}". Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.5.2,AssemblyFoldersEx}". Considered AssemblyFoldersEx locations. For SearchPath "{AssemblyFolders}". Considered "c:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "c:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "c:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. Considered "c:\Program Files (x86)\Microsoft.NET\ADOMD.NET\120\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "c:\Program Files (x86)\Microsoft.NET\ADOMD.NET\120\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "c:\Program Files (x86)\Microsoft.NET\ADOMD.NET\120\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\140\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\140\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\140\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist. For SearchPath "{GAC}". Considered "CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL", which was not found in the GAC. For SearchPath "{RawFileName}". Considered treating "CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL" as a file name, but it didn't exist. For SearchPath "bin\Debug\". Considered "bin\Debug\CrystalDecisions.CrystalReports.Engine.winmd", but it didn't exist. Considered "bin\Debug\CrystalDecisions.CrystalReports.Engine.dll", but it didn't exist. Considered "bin\Debug\CrystalDecisions.CrystalReports.Engine.exe", but it didn't exist.
解决方案
看来您安装的水晶运行时类型在这里很重要:
对我有用的运行时是 (注意名称中的CRforVS_redist)。这是用于开发机器的 Crystal for Visual Studio 再分发运行时。Jenkins 是一种构建机器,因此它还需要具有人类开发人员机器所具有的 Visual Studio 版本。CRforVS_redist_install_64bit_nn_n_nn.zip
我的错误是安装名为CRRuntime_32bit_nn_n_nn.msi
. 这种类型的运行时安装在部署构建应用程序的服务器上。
推荐阅读
- angular - 如何在角度 html 文件中使用 (toLowerCase()) 类似的方法?
- java - 无需重新启动服务器即可重新加载密钥库
- python - 数据未与日期时间正确分组
- python - 动态 GStreamer 管道不可搜索
- scala - 什么时候有 2.13 的 sbt 版本?
- c++ - std::optional::emplace() 默认构造一个可选在clang中不起作用?
- html - 减少边框长度
- sql - 如何修复 Postgres 12 错误:CASE 中不允许设置返回函数
- sql-loader - 在 SQL 加载器中跳过输入文件中的多列
- java - 组 - 从数据框中的 2 列计数 - Spark Java