Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
.NET 4.x

Дополнение MAF — почему не находит?

10.03.2017, 10:31. Показов 1497. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пробую сделать поддержку дополнений MAF dotNET4
Всё компилируется, работает, но не находит дополнения.

После вызова
C#
1
2
AddInStore.Update(Environment.CurrentDirectory);
IList<AddInToken> tokens = AddInStore.FindAddIns(typeof(ProgrammerHostView), Environment.CurrentDirectory);
Список пустой.
Но в файле AddIns.store видны записи о дополнении и приложение запускается.

У кого было такое, с чем это может быть связано?

Приложил архив с проектами (пароль 000). Много компонент MAF. Здесь в листинг не удобно выложить.
Описание:
20170310 это проект, приложение хост Programmer (оно WCF сервер), остальное компоненты MAF
AddInARKbase дополнение, у него 2 метода, которые сейчас просто возвращают true
Compil всё скоспиленное
DebugClient клиент, чтобы попробовать подключиться к Programmer. Запускать не обязательно.

Для проверки достаточно в Compil запустить Programmer
И прочитать строки.
AddIns
AddIns find 0 ok
Почему 0?

Спасибо
Вложения
Тип файла: rar MAF.rar (78.9 Кб, 3 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2017, 10:31
Ответы с готовыми решениями:

Простой VAF-MAF переходник.
Всем привет. Являюсь владельцем BMW с двигателем M42, на 40-43 моторах есть очень больное место это расходомер воздуха. Он же VAF,...

Почему не находит индекс?
Здравствуйте. Подскажите почему при использовании mysqli функция отрабатывает нормально вот код: function...

Дополнение к вопросу "Если свет - электромагнитная волна, почему она распространяется в вакууме"
&quot;Электромагнитная волна&quot; - это метафора, она основана на том обстоятельстве, что квантовая теория пока плохо объясняет явления типа...

9
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
20.03.2017, 15:07  [ТС]
Почти разобрался. Оказалось дело в том, что параметры методов дополнений обязательно должны быть сериализуемые.
C#
1
2
3
4
5
6
7
8
9
10
11
12
[AddInContract]
    public interface IAddInProgrammer : IContract
    {
        bool OpenProgBox(Side si, int man, int model);
        bool CloseProgBox(Side si);
    }
...
public enum Side
    { 
        L,
        R,
    }
Тип Side не проходит. Если его заменить на int, то дополнение находится.

Вопрос. Танцы с бубнами пока никак не позволили сделать enum Side сериализуемым, чтобы MAF заработал. Кто знает, как описывать сериализуемые типы для MAF?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
20.03.2017, 15:52
У меня вообще ваш код никак не работает, в консоль ничего не пишет, попытки расставить брякпойнты по коду тоже не увенчались успехом. Но компилится нормально... Атрибут [Serializable] на enum пробовали добавлять?
0
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
20.03.2017, 15:59  [ТС]
Код скомпилен в SharpDevelop и запускается нормально. Наверное у вас dotNET 4 не стоит.
[Serializable] пробовал, дополнение не работает.

Добавлено через 1 минуту
Код выше теперь вообще не нужен. Проблема. Как сделать, чтобы методы дополнения могли принимать enum .
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
20.03.2017, 17:13
У меня .NET 4.6.2 стоит, который должен запускать 4.0 без проблем. Проверял в VS2015 и VS2017, не работает вообще ничего. Консоль появляется и закрывается не выводя ничего, ошибок тоже никаких не возникает.

Добавлено через 1 час 10 минут
Еще есть атрибут [ServiceKnownType].
0
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
21.03.2017, 11:28  [ТС]
Спасибо
Как этим атрибутом пользоваться для этого случая?

Тестовый проект прилагается TestMAF это просто проект с методом в дополнении, который можно вызвать.
Для запуска всё компилируется по пути: TestMAF\TestMAF\bin\Debug
Можно запустить TestMAF.exe и увидеть вывод с вызовами метода дополнения 3 раза:
Test MAF
Test AddIn
Find: 1
Addin.Test() = True
Addin.Test() = True
Addin.Test() = True

Дальше этот проект доработан, чтобы был тип enum Side, который будет передаваться в метод дополнения. Проект TestMAF2. Тип определён в сборке MyTypes, заданы атрибуты для сериализации: [Serializable] [DataContract] [EnumMember] . Ничего не работает.

Файлы прилагаются. Почему не работает TestMAF2? Как правильно определить enum для MAF?
Вложения
Тип файла: rar TestMAF.rar (31.1 Кб, 4 просмотров)
Тип файла: rar TestMAF2.rar (34.6 Кб, 1 просмотров)
0
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
31.03.2017, 12:04  [ТС]
Всем привет.
Разобрался. Есть дополнения MAF, которые используют сборки с типами. Программа тоже использует эти сборки.
Чтобы работало нужны следующие условия:
- Тип нужно сделать сериализуемым
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    [Serializable]
    [DataContract]
    public enum Side
    { 
        [EnumMember]
        L,
        
        [EnumMember]
        R,
        
        [EnumMember]
        Left=0,
        
        [EnumMember]
        Right=1
    }
- сборку с типами нужно скомпилировать со строгим именем например при помощи утилиты sn.exe -k имяфайла.snk .
В AssemblyInfo.cs сборки с типами нужно добавить [assembly: AssemblyKeyFile(@"MyTypes.snk")] и выставить версию сборки.

- После этого в дополнении можно указать путь к сборке с типами в app.config (ПосмотретьpublicKeyToken можно с помощью команды sn.exe -Tp имяфайла.dll)
XML
1
2
3
4
5
6
7
8
9
10
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    
        <dependentAssembly>
        <assemblyIdentity name="MyTypes" publicKeyToken="d73a1718770f8639" />
        <codeBase version="1.0.0.0" href="file:///E:\Разное\TestMAF3\TestMAF\bin\Debug\MyTypes.dll" />
        </dependentAssembly>
        
    </assemblyBinding>
    </runtime>
Работающий пример прилагается. Там всё собрано в подкаталоге TestMAF3\TestMAF\bin\Debug Если запустить приложение, то оно вызывает метод дополнения и выводит
Test MAF
Test AddIn
Find: 1
Addin.Test() = True
Addin.Test() = True
Addin.Test() = True
Press any key to continue . . .

Спасибо
Вложения
Тип файла: rar TestMAF3.rar (58.3 Кб, 5 просмотров)
0
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
04.04.2017, 11:45  [ТС]
Ещё небольшая проблема.
Сделал библиотеку, назвал сборку Version.dll .
Так вот при работе приложения выдаёт ошибку (скриншот прилагается).
Если сборку переименовать в Version_.dll, то всё в порядке.
Кто-нибудь знает Version.dll название файла имеет какое то специальное значение в dotNET?
Миниатюры
Дополнение MAF — почему не находит?  
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
04.04.2017, 14:03
Есть предположение что mscoree.dll обращается к системной DLL version.dll для вызова WinAPI GetFileVersionInfoSizeW, а т.к. в текущем каталоге имеется DLL с именем version.dll, то поиск системной DLL заканчивается и происходит неудачная попытка вызова GetFileVersionInfoSizeW из вашей сборки...
1
7 / 6 / 5
Регистрация: 16.07.2015
Сообщений: 147
04.04.2017, 14:59  [ТС]
Похоже так. При освоении MAF сделал множество косяков. Теперь работает ☺ Основные пункты перечислены выше, чтобы проект заработал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2017, 14:59
Помогаю со студенческими работами здесь

Почему код не находит ссылку?
Почему не находит ссылку вот мой контролерusing System; using System.Linq; using System.Web.Mvc; using store.Models; namespace...

Почему не находит часть кода
Здравствуйте, подскажите почему вот с этой страницы...

Swift почему else if не находит условие
-по таймеру происходит установка backgrounda из массива (тип String) (все отрабатывает нормально) -необходимо или по индексу массива...

Почему не находит обратные ссылки?
Помогите разобраться и посоветуйте, как лучше сделать. Мы обслуживаем сразу несколько сайтов, но продвигать необходимо пока только один...

Почему test не находит файл?
Здравствуйте! Написал следующий скрипт: if test -z $1 then echo Vvedite parametry echo ’$1’- imya kataloga ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru