Attualmente stiamo testando Mono per vedere se le nostre DLL .NET funzioneranno per i clienti su Linux. Le nostre DLL forniscono componenti per Windows Form. Ho inserito le DLL nella directory Debug, aggiunto i riferimenti e creato una classe derivante da un Windows Form. La classe era corsa autonoma bene, ma dopo ho aggiunto i riferimenti DLL e ha creato uno dei nostri componenti (l'intellisense ha funzionato bene), si compila ma non verrà eseguito:Utilizzo della DLL di assemblaggio .NET precompilato in Mono?
** (/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'
ho guardato le proprietà del gruppo, ed è quella versione con quella chiave pubblica.
C'è un modo per utilizzare queste DLL? Che cosa sto facendo di sbagliato?
EDIT:
Secondo MoMA, a parte alcuni [MonoTodo] s che non hanno alcuna influenza sulla situazione, v'è un problema in tre delle DLL:
Calling Method | P/Invoke Method | P/Invoke Library void OnHandleCreated (EventArgs) | int GoText/ComboBoxControl.SetWindowTheme (IntPtr, string, string) | uxtheme.dll
Tuttavia, Aprii uno dei nostri progetti di esempio creati con VS2008, ha indicato il riferimento alla DLL nel posto giusto e ha funzionato correttamente. Ma non ho potuto ottenere il riferimento per lavorare in un nuovo progetto. Sto facendo qualcosa di sbagliato?
MODIFICA 2: Per chiarire, non vogliamo ricreare un'applicazione Windows esistente: stiamo simulando un cliente che crea una nuova applicazione con la nostra DLL. Stavo solo testando per vedere se si trattava di un problema di dll. Poiché l'applicazione VS-made è stata in grado di trovare la DLL ed eseguire correttamente, sembrerebbe che non sia un problema di dll. La nuova applicazione non chiama nulla che l'applicazione creata da VS non abbia.
Appena aggiunto i dettagli MoMA sopra. Funziona comunque bene con l'app di esempio. Non solo con l'app appena creata fatta con MonoDevelop. – NickAldwin
Non è necessario (non dovrebbe) ricreare l'app in MonoDevelop. Mono dovrebbe essere in grado di eseguire le DLL compilate in Visual Studio. Guarderei quella chiamata ComboBoxControl.SetWindowsTheme - che sta facendo la chiamata p/invoke, il che significa che non sarà supportata in Mono. Puoi rimuoverlo o non usare quel controllo? –
Non vogliamo ricrearlo: stiamo simulando un cliente che crea una nuova applicazione con la nostra DLL. Stavo solo testando per vedere se si trattava di un problema di dll. Poiché l'applicazione VS-made è stata in grado di trovare la DLL ed eseguire correttamente, sembrerebbe che non sia un problema di dll. La nuova applicazione non chiama nulla che l'applicazione creata da VS non abbia. – NickAldwin