1

我编写了一个非常简单的 C# 控制台应用程序,它将打开一个 Crystal Report,刷新它并将其作为 PDF 保存到指定位置。

在 VS2005 中运行时一切正常;pdf文件按预期生成。当我将 .exe 复制到我的根 C: 驱动器并从命令行运行它时,我得到一个对话框,指出“CrystalGenerator 已停止工作” - 但仍会生成 pdf 文件!查找此对话框的可能原因表明发生了未处理的异常,但 Main 方法的全部内容包含在 try/catch 中,因此这不是我的问题。

查看事件日志,我看到许多条目说明“找不到插入索引 (%1) 的替换字符串”,但找不到对此含义的合理解释。

好处是,如果我将文件复制到运行 Server 2003(它打算在其中运行)的机器上,则命令运行没有错误 - 但我想知道为什么该应用程序在 Vista 上的行为异常以及如何解决它。

提前致谢。

4

3 回答 3

1

如果您从提升的命令提示符(WinKey 后按 cmd 后按 Ctrl+Shift+Return)运行应用程序,它是否有效?

可能是您正在调用的进程之一需要提升。

于 2008-11-28T12:36:55.440 回答
1

如果由于某种原因导致堆栈溢出,则无法捕获它,因为无法可靠地展开调用堆栈。

在这种情况下,您的应用程序将像您所说的那样运行。

于 2008-12-25T02:36:30.207 回答
0

好吧,经过大量的链接追逐后,这种行为看起来是“设计使然”!

StackOverflows 自己的 Jeff Atwood 遇到了这个问题(见这里)并在 Microsoft Connect 上提出了这个问题(见这里)。

看起来我将寻找另一种方法 - 尽管代码确实适用于 Server 2003。

感谢 divo 的建议,这些建议非常有帮助。

于 2008-12-01T09:17:15.403 回答