Снегопат

Обсуждение Снегопата
Текущее время: 19 май 2024, 17:51

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 29 авг 2011, 15:32 
Не в сети

Зарегистрирован: 24 авг 2011, 15:22
Сообщения: 23
lustin писал(а):
- ClrAddinLoader.dll я так понимаю скомпилирован под .NET 3.0

Нет. Загрузчик собран под framework 2.0.

.net framework версий 2.0, 3.0, 3.5 используют один и тот-же runtime, сл-но для текущей версии загрузчика можно собирать аддины с любой из этих версий framework-а.

У .net framework 4.0 новый runtime. Для таких аддинов надо собрать версию загрузчика с этим runtime.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 29 авг 2011, 15:33 
Не в сети

Зарегистрирован: 24 авг 2011, 15:22
Сообщения: 23
steban писал(а):
У .net framework 4.0 новый runtime. Для таких аддинов надо собрать версию загрузчика с этим runtime.

Собрать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 29 авг 2011, 15:58 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
steban писал(а):
steban писал(а):
У .net framework 4.0 новый runtime. Для таких аддинов надо собрать версию загрузчика с этим runtime.

Собрать?


ну я выкрутился поменяв конфигурацию сборки AddIn под .NET 3.5 - можно отразить в документации и не делать вторую сборку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 29 авг 2011, 17:39 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
вот и вопрос назрел.

вижу hadler'ы на события - например IDesignerEvents_onIdleEventHandler, а вот событий у designer не вижу.

видимо я что-то не так делаю.

если я все правильно помню то подписка на события на C# должна выглядеть как-то так:
Код:
public class Test: ClrAddinBase
{
 public Test()
 {
    designer.OnIdle += delegate () { designer.Message("Test on idle", MessageMarkers.mNone);  }
 }      
}


а у меня нету Event'а OnIdle у объекта designer


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 30 авг 2011, 11:19 
Не в сети

Зарегистрирован: 24 авг 2011, 15:22
Сообщения: 23
lustin писал(а):
вижу hadler'ы на события - например IDesignerEvents_onIdleEventHandler, а вот событий у designer не вижу.

их там и нету (в той версии скрипта).
Исправил в новой версии.

lustin писал(а):
видимо я что-то не так делаю.

все так ты делаешь.

Попробуй с новой версией (удалить dll, обновить скрипты, перезагрузить конфигуратор)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 30 авг 2011, 11:21 
Не в сети

Зарегистрирован: 24 авг 2011, 15:22
Сообщения: 23
orefkov писал(а):
И эта.
дллку надо бы либо держать в бинарном виде в репозитарии (и тогда из скрипта ее не создавать), либо тогда из скрипта создавать вне репозитария


Решил создавать вне репозитария. Push сделал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 30 авг 2011, 12:56 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
steban писал(а):
orefkov писал(а):
И эта.
дллку надо бы либо держать в бинарном виде в репозитарии (и тогда из скрипта ее не создавать), либо тогда из скрипта создавать вне репозитария


Решил создавать вне репозитария. Push сделал.


я так понимаю fossil это аналог того же mercurial - тогда где должен быть список ignored файлов: чтобы dll никто не закомитил случайно - ее надо просто добавить в "игнор" список.

команда если я правильно прочитал help должна быть типа такой
Код:
cd .\scripts
fossil settings ignore-glob ClrAddinLoader.dll


однако я вижу steban просто переинициализирует библиотеку в корне Снегопата - результат тот-же: dll не в репозитарии и в коммит автоматически не попадет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 30 авг 2011, 13:40 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
steban писал(а):
Попробуй с новой версией (удалить dll, обновить скрипты, перезагрузить конфигуратор)


подписка на события заработала

Код:
public class History : ClrAddinBase
{
   
  private bool  startAddInWithEvents()
  {
     try {
      designer.onIdle += OnIdleHandler;
      designer.onUnLoadAddin += delegate { designer.onIdle -= OnIdleHandler;};
      return true;
    } catch (Exception e) {
      say("History Start Error - " + e.Message);
      return false;
    }
 }
            
 private void say(string text, MessageMarkers markers = MessageMarkers.mNone)
 {
   designer.Message(text, markers);
 }
      
// public methods
 public void MessageTest()
 {
   designer.MessageBox("Это скрипт на .NET выполненный с помощью загрузчика AddIn", MsgBoxStyles.mbOK,"Алеександр и Степан молодцы",100);
 }
      
 public void StartAddIn()
 {
  startAddInWithEvents();
 }
      
// events
 void OnIdleHandler()
 {
   say("I am on Idle - i have invoked by designer");
 }
}


При вышеозначенном коде после вызова StartAddIn() из Снегопата - появляется ожидаемая надпись "I am on Idle - i have invoked by designer"
однако Конфигуратор больше закрыть невозможно - при нажатии Файл -> Выход, все также продолжается выводится надпись "I am on Idle..." и конфигуратор работае как ни в чем не бывало.

P.S. Вот сейчас смотрю - как подключить stdcommands к С#: видимо никак :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 30 авг 2011, 13:50 
Не в сети

Зарегистрирован: 24 авг 2011, 15:22
Сообщения: 23
lustin писал(а):
однако Конфигуратор больше закрыть невозможно - при нажатии Файл -> Выход, все также продолжается выводится надпись "I am on Idle..." и конфигуратор работае как ни в чем не бывало.

Загрузчик всегда сообщает снегопату что его аддины не могут быть выгружены (почему так - в теме немного раннее написано). Следовательно событие onUnLoadAddin не срабатывает и отписка от событий не происходит.

Если убрать обработчик, например, в макросе, то конфигуратор закрывается.

Код:
   public class MyClass : ClrAddinBase
   {
      private void onIdle()
      {
         designer.Message("Test on idle", MessageMarkers.mNone);
      }
      public void Start()
      {
         designer.onIdle += onIdle;
      }
      public void Stop()
      {
         designer.onIdle -= onIdle;
      }
   }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Addin-ы на .NET
СообщениеДобавлено: 30 авг 2011, 14:10 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
ИМХО вам поможет событие beforeExitApp. в нем снимайте обработчики
Правда, нужно продумать, что делать, если вы снимите обработчики, а какой-то другой аддин откажется выходить, Конфигуратор будет работать, но без ваших обработчиков :)
правда, это наверняка будет очень редко и перезапуск Конфигуратора поможет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB