Могу ли я использовать только системные данные моно на окнах? - PullRequest
1 голос
/ 13 марта 2009

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

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

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

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

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

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

1 голос
/ 13 марта 2009

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

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

0 голосов
/ 13 марта 2009

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

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

...