Я использую protobuf-net для сериализации моих данных. Все работает отлично под Windows, я использую Mono для запуска образца проекта под Linux, но, похоже, это не просто.protobuf-net + Mono + Linux
Я получаю следующее сообщение об ошибке:
Missing method Skip in assembly /home/***/Debug/Di3.dll, type System.Linq.Enumerable Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
Исключение брошено в следующей строке:
var instance = new ToSerializeClass();
А класс определяется как:
[ProtoContract]
public class ToSerializeClass
{
internal ToSerializeClass()
{// it seems that the protobuf net needs this constructor.
}
[ProtoMember(1)]
internal int omega { set; get; }
[ProtoMember(2)]
internal List<Lambda> lambda { set; get; }
}
я копирую отладки/разверните папку в Linux, замените protobuf-net.dll
и protobuf-net.xml
на o nes опубликовано для Mono
и вызовите мою программу, используя Mono
.
У меня отсутствуют какие-либо баллы здесь?
Я мог ошибаться, но я уверен, что protobuf-net * не использует * LINQ. Существует сборка 3.0 (поддержка WCF), но я никогда не выпускал версию, которая ссылается на LINQ (3.5, не включая LinqBridge), потому что мне здесь не нужны эти инструменты. Вы уверены, что проблема в том, где вы думаете? Я также смущен, почему вы меняете библиотеки DLL после сборки. Это звучит неплохо. Что вы там делаете? –
@MarcGravell Я почти уверен в вышеупомянутой строке исключения. Что касается вашего последнего пункта; Я также сделал сборку с надлежащей protobuf-net для Linux, но все же я получаю ту же ошибку. – Hamed
Что именно вы делали для своего моностроения? Вы использовали MonoDevelop/Xamarin? Вы использовали mcs/gmcs из командной строки/оболочки mono? Или вы просто создали Visual Studio? –