首页 > 解决方案 > 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.

标签: jenkinsmsbuildcrystal-reports

解决方案


看来您安装的水晶运行时类型在这里很重要:

对我有用的运行时是 注意名称中的CRforVS_redist)。这是用于开发机器的 Crystal for Visual Studio 再分发运行时。Jenkins 是一种构建机器,因此它还需要具有人类开发人员机器所具有的 Visual Studio 版本。CRforVS_redist_install_64bit_nn_n_nn.zip

我的错误是安装名为CRRuntime_32bit_nn_n_nn.msi. 这种类型的运行时安装在部署构建应用程序的服务器上。


推荐阅读