RhinoMocks ломает компилятор в последних версиях Mono / MonoDevelop - PullRequest
3 голосов
/ 09 апреля 2011

Я не уверен точно, что сломало это, поскольку я был спорадическим с моей разработкой Mono / Monotouch, но я полагаю, что это последнее обновление для моно фреймворка.Внезапно сборка моего проекта Unit Test (который сам по себе является проектом библиотеки MonoTouch) теперь ломает компилятор, и, похоже, это RhinoMocks DLL (удаление ссылки исправляет это).Похоже, что RM DLL ссылается на неправильную системную DLL (не MT), но то, что сбивает с толку, это то, почему это никогда не ломалось, и мои тесты работали нормально.

Я поместил простой пример SLN на Github, который воспроизводит ошибку: https://github.com/briandonahue/MonoIssue

А вот вывод сборки:

  Building: Sample (Debug|iPhoneSimulator)

  Building Solution Sample

  Building: Test (Debug|iPhoneSimulator)

  Performing main compilation...
  /Developer/MonoTouch/usr/bin/smcs /noconfig "/out:/Users/brian/development/Sample/Test/bin/iPhoneSimulator/Debug/Test.dll" "/r:/Developer/MonoTouch/usr/lib/mono/2.1/System.dll" "/r:/Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll" "/r:/Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll" "/r:/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll" "/r:/Users/brian/development/Sample/lib/Rhino.Mocks.dll" /nologo /warn:4 /debug:+ /debug:full /optimize- /codepage:utf8 "/define:DEBUG"  /t:library "/Users/brian/development/Sample/Test/Test.cs" 
  The class System.Diagnostics.EventLog could not be loaded, used in System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089The class System.Diagnostics.TraceSource could not be loaded, used in System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089


  Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
    at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
    at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 



  Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
    at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
    at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 
  Build complete -- 1 error, 0 warnings

  ---------------------- Done ----------------------

  Build: 1 error, 0 warnings

Ответы [ 3 ]

2 голосов
/ 11 апреля 2011

Увидеть то же самое с mono 2.10.1 и monotouch 4.0 на симуляторе.Но только в том случае, если для параметров компоновщика установлены ссылки на все сборки.

Работает нормально, если для параметров компоновщика не заданы ссылки или только сборки SDK.

0 голосов
/ 18 апреля 2011

Та же проблема здесь. Вы должны связать сборки SDK, чтобы запустить его на устройстве. Так что, если эта проблема не будет решена, ваше приложение не будет работать.

0 голосов
/ 10 апреля 2011

Было упомянуто, что компилятор был улучшен в последнем выпуске Mono, поэтому я думаю, что теперь компилятор может сказать вам: «Ну, я просто обнаружил, что должен сообщить об этом как об ошибке».:)

...