我們目前正在測試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