NemerleLanguageService не инициализируется
От: i1yich  
Дата: 14.10.09 01:48
Оценка:
Решил познакомится с интеграцией, все скачалось, установилось и скомпилировалось отлично, но при попытке открыть или создать Nemerle-проект сразу же наткнулся на баг.
Класс NemerleLanguageService не может проинициализироваться, если в текущий аппдомен загружены динамические сборки. Непосредственно ошибка возникает в конструкторе класса IntelliSenseModeLibraryReferenceManager, в строке, где он получает CodeBase сборок:

      foreach (assembly in AppDomain.CurrentDomain.GetAssemblies())
      {
        // Skip nameless and satellite assemblies
        //
        def assemblyName = assembly.GetName();
        unless (assemblyName == null || assemblyName.Name.EndsWith(".resources"))
        {
          def path = Uri(assembly.CodeBase).LocalPath;
          def fileTime = GetLastWriteTimeUtc(path);
          assByString[path] = (assembly, fileTime);
          assByStrongName[assembly.FullName] = assembly;
        }
      }


При обращении к assembly.CodeBase получаем ошибку:

assembly.CodeBase' threw an exception of type 'System.NotSupportedException'
    base {System.SystemException}: {"The invoked member is not supported in a dynamic assembly."}


В итоге для пользователя все выливается в MessageBox
---------------------------
Microsoft Visual Studio
---------------------------
Value cannot be null.

Parameter name: languageService
---------------------------
ОК Отмена
---------------------------
, проекты немерле не загружаются, а также не проходят юнит-тесты интеграции.

Сборка, на которой код спотыкается, как-то относится к плагину RedGate SQL Propmt, установленному у меня. При его отключении все заработало нормально.
Re: NemerleLanguageService не инициализируется
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.10.09 16:45
Оценка:
Здравствуйте, i1yich, Вы писали:

I>Решил познакомится с интеграцией, все скачалось, установилось и скомпилировалось отлично, но при попытке открыть или создать Nemerle-проект сразу же наткнулся на баг.


1. Речь идет об интеграции собранной из последних исходников?
2. Как воспроизвести проблему?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: NemerleLanguageService не инициализируется
От: i1yich  
Дата: 14.10.09 16:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>1. Речь идет об интеграции собранной из последних исходников?

Конечно, судя по всему этот баг с самого начала там, в IntelliSenseModeLibraryReferenceManager.

VD>2. Как воспроизвести проблему?

Загрузить в аппдомен динамически генерируемую сборку, т.е. не загруженную из файла. Я на это наткнулся, потому что у меня установлен плагин, который использует динамические сборки.
Re: Другая проблема: не проходят юнит-тесты
От: i1yich  
Дата: 14.10.09 17:01
Оценка:
При отключении плагина, использующего динамические сборки, интеграция более менее заработала, но по-прежнему у меня не проходят юнит-тесты.
Все как один тесты из проекта VSIntegration.nuint останавливаются на первом же ассерте при инициализации тесткейза в методе Test1.Init:

      _project = _engine.Project;
      Assert.IsNotNull(_project, "_project is null");

например:
Tests.Test1.Complete_2:
  _project is null
  Expected: not null
  But was:  null


Свойство Engine.Project почему-то всегда возвращает null. Куда копать?
Re[3]: NemerleLanguageService не инициализируется
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.10.09 18:09
Оценка:
Здравствуйте, i1yich, Вы писали:

VD>>2. Как воспроизвести проблему?

I>Загрузить в аппдомен динамически генерируемую сборку, т.е. не загруженную из файла. Я на это наткнулся, потому что у меня установлен плагин, который использует динамические сборки.

А нельзя ли этот плгин поиметь, чтобы что называется "в боевых условиях" проблему лицезреть?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Другая проблема: не проходят юнит-тесты
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.10.09 18:11
Оценка:
Здравствуйте, i1yich, Вы писали:

I>При отключении плагина, использующего динамические сборки, интеграция более менее заработала, но по-прежнему у меня не проходят юнит-тесты.


Юнит-тесты пока проходить и не будут. В последнее время правка была столь объемная, что итеративное изменение юнит-тестов привело бы к морю непродуктивной работы.

Как только мы добьем функциональность и приступим к режиму тестирования и исправления багов, то восстановим все тесты (или напишем новые).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: NemerleLanguageService не инициализируется
От: i1yich  
Дата: 14.10.09 18:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А нельзя ли этот плгин поиметь, чтобы что называется "в боевых условиях" проблему лицезреть?


триал можно скачать отсюда: http://www.red-gate.com/download/SQLPromptDownload
Re: NemerleLanguageService не инициализируется
От: seregaa Ниоткуда http://blogtani.ru
Дата: 29.03.10 20:40
Оценка: 2 (1)
Здравствуйте, i1yich, Вы писали:

I>Решил познакомится с интеграцией, все скачалось, установилось и скомпилировалось отлично, но при попытке открыть или создать Nemerle-проект сразу же наткнулся на баг.

I>Класс NemerleLanguageService не может проинициализироваться, если в текущий аппдомен загружены динамические сборки. Непосредственно ошибка возникает в конструкторе класса IntelliSenseModeLibraryReferenceManager, в строке, где он получает CodeBase сборок:
I>Сборка, на которой код спотыкается, как-то относится к плагину RedGate SQL Propmt, установленному у меня. При его отключении все заработало нормально.

Пофиксил в ревизии 8691 — просто пропускаю динамические сборки.

Эта же ошибка возникала при попытке добавить проект на Nemerle в солюшен, уже содержащий c# проекты. Здесь уже кто то жаловался на подобную проблему. Причина — к этому моменту в AppDomain обычно лежит динамическая сборка Com2InteropEmit, она и мешает загрузке. Кто ее создает — , возможно сама студия.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.