В настоящее время мы тестируем Mono, чтобы выяснить, будут ли наши .NET DLL работать для клиентов в Linux. Наши библиотеки DLL предоставляют компоненты для Windows Forms. Я поместил библиотеки DLL в каталог Debug, добавил ссылки и создал класс, производный от формы Windows. Класс работал нормально автономно, но после того как я добавил ссылки на DLL и создал один из наших компонентов (intellisense работал нормально), он компилируется, но не запускается:
** (/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? Что я делаю не так?
EDIT:
Согласно MoMA, кроме некоторых [MonoTodo], которые не имеют отношения к ситуации, в трех 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.