2009-03-13 3 views
1

У меня есть приложение Windows WinForms, которое взаимодействует с монофоническим интерфейсом linux. Возможно ли, что я получаю файл system.data.dll от mono и использую его в окнах вместо встроенного .net.Могу ли я использовать только системные данные mono на окнах?

Я хотел использовать remotingformat двоичного типа и гарантировать, что оба конца могут его сериализовать/десериализовать.

ответ

2

Очень маловероятно, что вы сможете достичь этого без ущерба для установки Microsoft .NET. Все, что вы получите, это то, что независимо от того, какой API вы вызываете, всякий раз, когда CLR пытается загрузить DLL, всегда будет получить его из GAC, если там существует совместимая версия.

WinForms неявно загрузит System.Data.dll в нескольких случаях, и CLR проведет проверку GAC. Если вы используете версию WinForms для MS, это будет разрешено до версии MS, находящейся в GAC. Невозможно разбить это без изменения GAC.

Все сборки MS подписаны с помощью закрытого ключа, который AFAIK, моно не может дублировать. Похоже, вам не удастся загрузить вашу DLL перед встроенной DLL GAC и, следовательно, не сможет ее заменить.

0

Если Mono соответствует спецификации, он должен быть бинарным, совместимым с MS. IIRC это так.

Если это действительно проблема, почему бы не просто использовать моно на стороне клиента тоже?

+0

Нет ничего плохого в реализации winforms .net, я думаю, что просто использую общую System.Data на обоих концах, поэтому сериализация/десериализация гарантируется, даже если remotingformat имеет двоичный (вместо xml) тип. – Hao

1

Моно сборочные работы прекрасно работают на Windows, а также на Linux и Mac и т. Д. Я использовал сборки Mono таким образом несколько раз для различных целей.

Не всегда желательно использовать полный клиент Mono в Windows, так как он отличается от времени выполнения, чем клиент .net. Это не совсем тот же уровень производительности и возможностей (хотя он все время становится все ближе) как CLR для Microsoft.

Смежные вопросы