我刚刚遇到了在 Azure 上运行 Crystal Reports 2010 (13.0.4) 的相同问题。我听从了BritishDeveloper 和其他一些来源的建议。我的方法略有不同,因为我使用 Azure blob 存储来存储水晶运行时,这使得项目发布比将其包含在项目中时快得多。
以下是我获得水晶报告的方法:
1) 在Azure portal内设置新的blob存储服务
2) 将 Crystal 安装程序上传到此 blob 存储
使用免费工具CloudXplorer将CRRuntime_64bit_13_9_4.msi上传到名为crystalinstaller的容器中(上传前记得解压)。
3) 在 Visual Studio 中,在您的 Azure 项目 ServiceDefinition.csdef 中创建启动脚本定义:
<ServiceDefinition...>
<WebRole...>
<Startup>
<Task commandLine="AzureStartUp.cmd" executionContext="elevated" taskType="background" />
</Startup>
</WebRole>
</ServiceDefinition>
4) 将以下启动脚本存储在您的 Web 项目的根目录中,并将“构建操作”none 和“复制到输出”设置为 always。这里学到的教训:approot/siteroots 并不总是在 E: 驱动器上
@ECHO off
@REM Setting up Azure Stroage Credentials
set azurestoragename=<name>
set azurestoragekey=<key>
set storagecontainername=crystalinstaller
@REM Setting up Azure Drive
@REM (sometimes E:, sometimes F: maybe one day G:?)
set drive=%cd:~0,3%
@REM Download Crystal Runtime 13.0.4
@REM from blob storage account
set filename=CRRuntime_64bit_13_0_4.msi
AzureBlobDownloader.exe "%azurestoragename%" "%azurestoragekey%" "%storagecontainername%" "%filename%"
@REM Install Crystal Runtime 13.0.4
msiexec.exe /I CRRuntime_64bit_13_0_4.msi /qn
@REM Copy Crystal Reports Viewer Files
robocopy D:\inetpub\wwwroot %drive%sitesroot\0 /S
robocopy D:\inetpub\wwwroot %drive%approot /S
5) 下载一个命令行工具,该工具可以从 blob 存储下载到您的 azure 服务虚拟机
我使用了来自Windows Azure Tomcat Solution 的 packagedownloader.exe,但可能还有其他的,或者您可以轻松地自己动手。我将它重命名为 AzureBlobDownloader.exe 并与包含的 Microsoft.WindowsAzure.StorageClient.dll 一起复制到我的 Web 项目的根目录中,并将“构建操作”none 和“复制到输出”设置为 总是。
如果您仍然遇到问题,请尝试将远程桌面连接到您的实例中,并使用DebugView 之类的工具来监控正在发生的事情。