我有这个测试程序
namespace MonoWindowsFormsTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
使用.NET 4.5.1和VS2012在Windows 8.1上构建
我打开我的cmd,将目录更改为我的调试文件夹,然后运行此命令:
mono myapp.exe > error.txt
它什么都没给我。它不启动我的程序,error.txt为空。
我在PATH中有这个:
C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files (x86)\Mono-3.2.3\bin
使用mono 3.3.0运行。
实际上这在10分钟前有效,但我决定将Mono更新到3.2.4,但看起来Mono 3.2.4仅适用于OS X,因为mono项目下载部分的更新链接指向3.2 .3选择Windows平台时。但无论如何我继续安装下载的单声道包。
因为重新安装,有什么我忘记做的吗?安装一些东西,写一些配置?
我尝试构建并运行这个简单的控制台应用程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MonoConsoleTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hellllo");
Console.ReadKey();
}
}
}
当我通过单声道运行时,它运行得很好。
答案 0 :(得分:0)
这是一个很难的,但我突然想起来了。上次我在Windows上安装Mono时,我更改了C:\ Program Files(x86)\ Mono-3.2.3 \ etc \ mono \ config文件来保存:
<configuration>
<dllmap dll="i:cygwin1.dll" target="libc.so.6" os="!windows" />
<dllmap dll="libc" target="libc.so.6" os="!windows"/>
<dllmap dll="intl" target="libc.so.6" os="!windows"/>
<dllmap dll="intl" name="bind_textdomain_codeset" target="libc.so.6" os="solaris"/>
<dllmap dll="libintl" name="bind_textdomain_codeset" target="libc.so.6" os="solaris"/>
<dllmap dll="libintl" target="libc.so.6" os="!windows"/>
<dllmap dll="i:libxslt.dll" target="libxslt.so" os="!windows"/>
<dllmap dll="i:odbc32.dll" target="libodbc.so" os="!windows"/>
<dllmap dll="i:odbc32.dll" target="libiodbc.dylib" os="osx"/>
<dllmap dll="oci" target="libclntsh.so" os="!windows"/>
<dllmap dll="db2cli" target="libdb2_36.so" os="!windows"/>
<dllmap dll="MonoPosixHelper" target="libMonoPosixHelper.so" os="!windows" />
<dllmap dll="i:msvcrt" target="libc.so.6" os="!windows"/>
<dllmap dll="i:msvcrt.dll" target="libc.so.6" os="!windows"/>
<dllmap dll="sqlite" target="libsqlite.so.0" os="!windows"/>
<dllmap dll="sqlite3" target="libsqlite3.so.0" os="!windows"/>
<dllmap dll="libX11" target="libX11.so" os="!windows" />
<dllmap dll="libcairo-2.dll" target="libcairo.so.2" os="!windows"/>
<dllmap dll="libcairo-2.dll" target="libcairo.2.dylib" os="osx"/>
<dllmap dll="libcups" target="libcups.so.2" os="!windows"/>
<dllmap dll="libcups" target="libcups.dylib" os="osx"/>
<dllmap dll="i:kernel32.dll">
<dllentry dll="__Internal" name="CopyMemory" target="mono_win32_compat_CopyMemory"/>
<dllentry dll="__Internal" name="FillMemory" target="mono_win32_compat_FillMemory"/>
<dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/>
<dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/>
</dllmap>
<dllmap dll="gdiplus" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/>
<dllmap dll="gdiplus.dll" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/>
<dllmap dll="gtkhtml-3.0" target="libgtkhtml-3.8-15.dll"/>
</configuration>
我对这两行进行了更改
<dllmap dll="gdiplus" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/>
<dllmap dll="gdiplus.dll" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/>
根据以下链接添加 os =“!windows”:https://github.com/mono/mono/pull/587/files。当我通过mono运行我的Windows窗体应用程序时,它会立即启动。