使用Crystal Reports for .net时出错

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)

我没有包括所有适当的引用和使用声明吗?我尝试了很多组合,但没有效果.

Cod*_*ked 0

似乎是相关的。您是否尝试过那里列出的步骤?