我们目前正在测试Mono以查看我们的.NET DLL是否适用于Linux上的客户。我们的DLL为Windows窗体提供组件。我将DLL放在Debug目录中,添加了引用,并创建了一个从Windows窗体派生的类。该上课了运行良好的独立,但之后我加入了DLL引用,并创建了我们的组件之一(智能感知工作得很好),它编译但不会运行:在Mono中使用预编译的.NET程序集DLL?
** (/home/aldwin/testMonoWF/testMonoWF/bin/Debug/testMonoWF.exe:26905): WARNING **: Could not load file or assembly 'OUR.ASSEMBLY, Version=1.0.0.1, Culture=neutral, PublicKeyToken=ATOKEN' or one of its dependencies. Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'OUR.ASSEMBLY, Version=1.0.0.1, Culture=neutral, PublicKeyToken=ATOKEN' or one of its dependencies. File name: 'OUR.ASSEMBLY, Version=1.0.0.1, Culture=neutral, PublicKeyToken=ATOKEN'
我看着组件的性能,它就是那个带有该公钥的版本。
有没有办法让我使用这些DLL?我究竟做错了什么?
编辑:
据纽约现代艺术博物馆,比对情况没有影响一些[MonoTodo] S以外,还有三个在DLL中的一个问题:
Calling Method | P/Invoke Method | P/Invoke Library void OnHandleCreated (EventArgs) | int GoText/ComboBoxControl.SetWindowTheme (IntPtr, string, string) | uxtheme.dll
不过,我打开我们使用VS2008创建的示例项目之一,在正确的位置指向了DLL的引用,并且它工作正常。但我无法获得参考在新项目中工作。难道我做错了什么?
编辑2: 为了澄清,我们不想重新创建现有的Windows应用程序 - 我们正在模拟客户使用我们的dll创建新的应用程序。我只是测试,看看这是否是一个DLL问题。由于VS制作的应用程序能够找到dll并成功运行,它似乎不是一个dll问题。新的应用程序不会调用VS创建的应用程序没有的任何东西。
刚刚在上面添加了MoMA详细信息。不过,它可以很好地与示例应用程序一起运行只是不适用于使用MonoDevelop制作的新创建的应用程序。 – NickAldwin 2009-07-21 19:49:20
您不需要(不应该)需要在MonoDevelop中重新创建应用程序。 Mono应该能够运行在Visual Studio中编译的DLL。我会看看ComboBoxControl.SetWindowsTheme调用 - 这是进行p/invoke调用,这意味着它不会在Mono中受支持。你可以删除它,或不使用该控件? – 2009-07-21 20:08:43
我们不想重新创建它 - 我们正在模拟客户使用我们的dll创建新的应用程序。我只是测试,看看这是否是一个DLL问题。由于VS制作的应用程序能够找到dll并成功运行,它似乎不是一个dll问题。新的应用程序不会调用VS创建的应用程序没有的任何东西。 – NickAldwin 2009-07-21 20:26:41