Chúng tôi hiện đang thử nghiệm Mono để xem liệu .NET DLLs của chúng tôi có hoạt động với khách hàng trên Linux hay không. DLL của chúng tôi cung cấp các thành phần cho Windows Forms. Tôi đã đặt các tệp DLL trong thư mục Debug, thêm các tham chiếu và tạo một lớp bắt nguồn từ một Biểu mẫu Windows. Các lớp đã chạy độc lập tốt, nhưng sau khi tôi thêm các tài liệu tham khảo DLL và tạo ra một trong những thành phần của chúng tôi (IntelliSense làm việc tốt), nó biên dịch nhưng sẽ không chạy:Sử dụng Biên dịch DLL hội tụ sẵn trong 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'
tôi nhìn vào tính chất của hội đồng, và đó là phiên bản với khóa công khai đó.
Có cách nào để tôi sử dụng các tệp DLL này không? Tôi đang làm gì sai?
EDIT:
Theo MoMA, trừ một số s [MonoTodo] mà không có mang về tình hình, có một vấn đề trong ba DLL:
Calling Method | P/Invoke Method | P/Invoke Library void OnHandleCreated (EventArgs) | int GoText/ComboBoxControl.SetWindowTheme (IntPtr, string, string) | uxtheme.dll
Tuy nhiên, tôi đã mở một trong những dự án mẫu của chúng tôi được tạo ra với VS2008, chỉ ra tham chiếu đến DLL ở đúng nơi và nó hoạt động tốt. Nhưng tôi không thể có được tham chiếu để làm việc trong một dự án mới. Tôi có làm điều gì sai?
EDIT 2: Để làm rõ, chúng tôi không muốn tạo lại một ứng dụng cửa sổ hiện có - chúng tôi đang mô phỏng khách hàng tạo ứng dụng mới với dll của chúng tôi. Tôi đã chỉ thử nghiệm để xem nếu nó là một vấn đề dll. Kể từ khi ứng dụng VS-thực hiện đã có thể tìm thấy dll và chạy thành công, nó sẽ có vẻ nó không phải là một vấn đề dll. Ứng dụng mới không gọi bất kỳ ứng dụng nào do VS tạo ra.
Chỉ cần thêm chi tiết MoMA ở trên. Tuy nhiên, nó hoạt động tốt với ứng dụng mẫu. Chỉ cần không phải với các ứng dụng mới được tạo ra với MonoDevelop. – NickAldwin
Bạn không (không nên) cần tạo lại ứng dụng trong MonoDevelop. Mono sẽ có thể chạy DLL được biên dịch trong Visual Studio. Tôi sẽ nhìn vào đó ComboBoxControl.SetWindowsTheme gọi - đó là thực hiện cuộc gọi p/gọi, có nghĩa là nó sẽ không được hỗ trợ trong Mono. Bạn có thể loại bỏ nó, hoặc không sử dụng điều khiển đó? –
Chúng tôi không muốn tạo lại nó - chúng tôi đang mô phỏng một khách hàng tạo một ứng dụng mới với dll của chúng tôi. Tôi đã chỉ thử nghiệm để xem nếu nó là một vấn đề dll. Kể từ khi ứng dụng VS-thực hiện đã có thể tìm thấy dll và chạy thành công, nó sẽ có vẻ nó không phải là một vấn đề dll. Ứng dụng mới không gọi bất kỳ ứng dụng nào do VS tạo ra. – NickAldwin