Escribí un programa que genera archivos PDF a partir de un Informe de Crystal, luego envía esos archivos PDF a alguien. El programa funciona muy bien en mi máquina de desarrollo, pero cuando copio el directorio bin \ Release en el servidor de Windows 2000 (máquina donde me gustaría ejecutarlo), comienza a ejecutarse y luego genera este error y stack trace:Error al utilizar Crystal Reports para .net
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
EL ERROR OCURRE EN TODAS PARTES, EXCEPTO CUANDO SE EJECUTA EN VISUAL STUDIO.
.Net 2.0 está instalado en esa máquina, y desde entonces he instalado CRRedist2005_x86.msi sin ningún efecto. Incluso recibo el cuadro de diálogo "Enviar informe de error a Microsoft", aunque estoy usando try/catch para imprimir la excepción en un archivo. Incluso cuando se ejecuta el bloque catch, mi programa no se cierra correctamente.
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;
}
}
¿No incluyo todas las referencias adecuadas y las declaraciones de uso? He intentado muchas combinaciones, pero sin efecto.
Intente actualizar su registro para incluir la excepción InnerException.Message también. Eso te dirá qué error está arrojando 'ReportDocument..ctor', lo que te dará más para trabajar. –
* "EL ERROR OCURRE EN TODAS PARTES, EXCEPTO CUANDO SE EJECUTA DESDE VISUAL STUDIO." * ¿Ocurre también en su máquina cuando se ejecuta desde el directorio/bin? He tenido errores similares debido a dependencias faltantes ... –