1

我有一个想在 Linux 上运行的 C# 控制台应用程序。我已经在 MonoDevelop 中编译了它,并且在我的机器(Ubuntu 12.04 LTS,64 位)上运行良好。但是,在我租用的 VPS 上(相同的操作系统但没有 X11),虽然应用程序启动没有问题,但我在运行时遇到异常。

导致异常的调用是 System.Windows.Forms.TextRenderer 类的 MeasureText 方法。如果您想知道此方法在控制台应用程序中的作用,它需要测量以某种字体呈现的文本长度,以计算其创建的 SVG 文件中文本元素的正确位置。异常消息和堆栈跟踪摘录如下:

An exception was thrown by the type initializer for System.Windows.Forms.XplatUI


at System.Windows.Forms.TextRenderer.MeasureTextInternal (IDeviceContext dc, System.String text, System.Drawing.Font font, Size proposedSize, TextFormatFlags flags, Boolean useMeasureString) [0x00000] in <filename unknown>:0 
at System.Windows.Forms.TextRenderer.MeasureText (System.String text, System.Drawing.Font font) [0x00000] in <filename unknown>:0 

我想我已经在服务器上正确安装了有问题的字体,至少当我调用 fc-list 时它会显示出来。那么我需要 X 还是有办法解决它?我只是错过了服务器上的一些软件包安装吗?如果做不到这一点,是否有替代方法可以用来实现文本测量?

4

1 回答 1

0

我尝试了上面提出的建议,它奏效了。我安装了 xvfb,现在通过 xvfb-run 运行单声道。异常消失了,服务器上的内存使用量并没有增加太多。

于 2013-04-29T20:41:46.007 回答