Проект Visual Studio

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
157
Благодарностей
8
Баллы
18
Добрый день.
Делаю в проекте свой public class MailChecker : IZennoExternalCode. Не понятно как к конкретному кубику привязать конкретный класс.
Зенка не видит его, видит только созданный по умолчанию Program.
Неужели на каждый кубик нужно делать новый проект?
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 604
Благодарностей
922
Баллы
113
Классы написанные в проект VS не доступны в зенопостере, можно длл сделанную подкинуть в постер и через c# сниппет или общий код обращаться к этим классам
 
  • Спасибо
Реакции: tryinfinity

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
157
Благодарностей
8
Баллы
18
Еще прикол в том, что GptChat с пеной у рта мне доказывает, что при привязке dll через кубик "проект Visual Studio" зенка должна спрашивать какой из классов из этой библы следует использовать)
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 604
Благодарностей
922
Баллы
113
Еще прикол в том, что GptChat с пеной у рта мне доказывает, что при привязке dll через кубик "проект Visual Studio" зенка должна спрашивать какой из классов из этой библы следует использовать)
если просто сделать привязку длл к кубику то он просто запуститься через точку входа Program и выполнит чё там было. А надо именно dll через ссылки из GAC добавить в проект, прописать в юзингах неймспейс и тогда уже через c# кубик обращатсья к классам как делается обращение к классам из общего кода, но надо так же понимать что если dll использует какие то сторонние библиотеки то их тоже подкидывать через ссылки надо и юзинги прописывать
 

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
157
Благодарностей
8
Баллы
18
если просто сделать привязку длл к кубику то он просто запуститься через точку входа Program и выполнит чё там было. А надо именно dll через ссылки из GAC добавить в проект, прописать в юзингах неймспейс и тогда уже через c# кубик обращатсья к классам как делается обращение к классам из общего кода, но надо так же понимать что если dll использует какие то сторонние библиотеки то их тоже подкидывать через ссылки надо и юзинги прописывать
Ну какой-то полуфабрикат тогда)
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 663
Благодарностей
3 440
Баллы
113
Вы просто вызываете функцию/метод dll или общего кода в C# экшене и этим заменяете все экшены.
Проект Visual Studio заменяет весь шаблон, но есть ограничения по наличию проброшенных объектов постера.
 

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
157
Благодарностей
8
Баллы
18
Вы просто вызываете функцию/метод dll или общего кода в C# экшене и этим заменяете все экшены.
Проект Visual Studio заменяет весь шаблон, но есть ограничения по наличию проброшенных объектов постера.
Вопрос был задан в разделе новичков, вот ничего не понятно, что вы посоветовали)
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 695
Благодарностей
1 021
Баллы
113
Это было занятие в группе китайского языка?
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 695
Благодарностей
1 021
Баллы
113
Еще прикол в том, что GptChat с пеной у рта мне доказывает, что при привязке dll через кубик "проект Visual Studio" зенка должна спрашивать какой из классов из этой библы следует использовать)
Клауде лучше советует
 

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
157
Благодарностей
8
Баллы
18
если просто сделать привязку длл к кубику то он просто запуститься через точку входа Program и выполнит чё там было. А надо именно dll через ссылки из GAC добавить в проект, прописать в юзингах неймспейс и тогда уже через c# кубик обращатсья к классам как делается обращение к классам из общего кода, но надо так же понимать что если dll использует какие то сторонние библиотеки то их тоже подкидывать через ссылки надо и юзинги прописывать
После запуска dll прогружается в память, что в последующем не дает заменять эту dll на заново скомпилированную, т.к. она занята другим процессом. Как быть?)
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 663
Благодарностей
3 440
Баллы
113
.Net не имеет API для выгрузки своих библиотек, но Win32 для обычных - имеет, только перед этим надо хорошо знать этот .Net, что происходит, что надо правильно остановить, где надо правильно подчистить...
Из-за подобного и используется переходник отладки VS/PM, который запускается и завершается вместе с dll, но и имеет ограниченное кол-во проброшенных объектов постера (из-за чего и постоянные null).
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
931
Благодарностей
703
Баллы
93
После запуска dll прогружается в память, что в последующем не дает заменять эту dll на заново скомпилированную, т.к. она занята другим процессом. Как быть?)
Закрыть PM, заменить dll и заново запустить PM.
Что бы не мучится и постоянно не закрывать PM - использовать общий код. Пишем код в VS и вставляем классы в Общий код. Я себе для этих задач сделал компилятор, который весь код VS превращает в простыню для Общего кода PM.
 
  • Спасибо
Реакции: djaga

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
157
Благодарностей
8
Баллы
18
Нашел решение через загрузку DLL в память. Может кому понадобится:
C#:
try
{
    byte[] dllBytes = File.ReadAllBytes(@"c:\Program Files\ZennoLab\RU\ZennoProjectMaker V7\7.8.11.0\Progs\ExternalAssemblies\ZennoPosterProject1.dll.tmp");

    System.Reflection.Assembly asm = System.Reflection.Assembly.Load(dllBytes);
    
    var type = asm.GetType("ZennoPosterProject1.Program");
    var method = type.GetMethod("Test", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
    method.Invoke(null, new object[] { instance, project });
}
catch (Exception ex)
{
    project.SendErrorToLog("❌ Ошибка загрузки DLL: " + ex.Message, true);
}
 
  • Спасибо
Реакции: djaga

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)