winforms - 单控制台应用程序 : Winforms Method Throws Exception On Linux Without X

标签 winforms ubuntu mono x11

我有一个想在 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 还是有办法解决它?我只是错过了服务器上的一些软件包安装吗?如果做不到这一点,是否有替代方法可以用来实现文本测量?

最佳答案

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

关于winforms - 单控制台应用程序 : Winforms Method Throws Exception On Linux Without X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202759/

相关文章:

python - 尝试使用 nginx 和 gunicorn 设置 flask

c# - 使用 C# 和 Mono 为 OS X 构建 Cocoa UI

android - 将 AChartEngine 1.0.0 绑定(bind)到 Mono For Android 项目不起作用

c# - 打开的文件太多(Ubuntu 上的 Mono .NET)

c# - MDI Form 有焦点吗?

c# - winforms 中的 TreeView 错误

c# - 如何动态设置哪些属性绑定(bind)到 DataGridView?

python - 在 Ubuntu 终端中,我怎样才能让 python 程序继续运行?

git - 将 ssh 公钥添加到服务器上的 root 用户

c# - 使用 SetParent() 时问题定位窗口