【问题标题】:After uninstalling and reinstalling mono my winforms app won't start卸载并重新安装单声道后,我的 winforms 应用程序无法启动
【发布时间】:2013-12-21 15:25:26
【问题描述】:

我有这个测试程序

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是空的。

我的路径中有这个:

C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files (x86)\Mono-3.2.3\bin

这是使用单声道 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();
        }
    }
}

当我通过单声道运行它时它运行得很好。

【问题讨论】:

    标签: c# winforms visual-studio-2012 mono


    【解决方案1】:

    这个很难,但我突然想起来了。上次我在 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。当我通过单声道运行我的 Windows 窗体应用程序时,它会立即启动。

    【讨论】:

    • 接受您的回答以结束主题。
    • 如果我可以@Rolice 我会的,但 Stackoverflow 有一条规则,我只能在一定时间后接受我自己的答案。所以明天我会接受我自己的答案。
    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多