MAW*_*656 6 .net c# console-application crystal-reports
我编写了一个程序,从Crystal Report生成PDF,然后将这些PDF通过电子邮件发送给某人.该程序在我的开发机器上运行良好,但是当我将bin\Release目录复制到Windows 2000 Server(我想运行它的机器)时,它开始运行然后生成此错误和堆栈跟踪:
The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.
at CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()
at DailyJobCostSummaryEmail.Program.crptToPDF(String reportFile, String jobNum, String outputLocation) in M:\Projects\DailyJobCostSummaryEmail\DailyJobCostSummaryEmail\Program.cs:line 79
at DailyJobCostSummaryEmail.Program.Main(String[] args) in M:\Projects\DailyJobCostSummaryEmail\DailyJobCostSummaryEmail\Program.cs:line 46
Run Code Online (Sandbox Code Playgroud)
除了从可视工作室运行外,其他任何地方都会出现错误.
.Net 2.0安装在那台机器上,我已经安装了CRRedist2005_x86.msi而没有任何效果.我甚至得到了"向Microsoft发送错误报告"对话框,即使我正在使用try/catch将异常打印到文件中.即使执行了catch块,我的程序也无法正常关闭.
static void Main(string[] args)
{
try
{
String dir = @"JobCostReports";
DataTable jobs = new DataTable();
using (SqlConnection conn = new SqlConnection(connString))
{
String sql = "JC_GetJobsClosedYesterday";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(jobs);
}
List<String> files = new List<String>();
foreach (DataRow row in jobs.Rows)
{
files.Add(crptToPDF(@"JobCost.rpt", row["JobNumber"].ToString().TrimEnd(), dir));
}
Utilities.sendEmail("[toEmail]",
"[FromEmail]",
"Job Cost Summaries for Yesterday",
"Attached are Job cost summaries for the " + files.Count + " jobs closed yesterday.",
files.ToArray());
Console.WriteLine("Email sent.");
}
catch (Exception e)
{
using (StreamWriter writer = new StreamWriter("errors.log", true))
{
writer.AutoFlush = true;
Console.WriteLine();
writer.WriteLine(e.Message);
writer.WriteLine(e.StackTrace);
}
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
Console.Read();
}
finally { }
}
public static String crptToPDF(String reportFile, String jobNum, String outputLocation)
{
using (ReportDocument rpt = new ReportDocument())
{
rpt.Load(reportFile);
rpt.SetParameterValue("@vJobNumber", jobNum);
String output = outputLocation + @"\" + jobNum + "_JobCostSummary.pdf";
rpt.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, output);
return output;
}
}
Run Code Online (Sandbox Code Playgroud)
我没有包括所有适当的引用和使用声明吗?我尝试了很多组合,但没有效果.