Проект Visual Studio

  • Автор темы Автор темы tryinfinity
  • Дата начала Дата начала

tryinfinity

Client
Регистрация
24.12.2016
Сообщения
159
Реакции
9
Баллы
18
Добрый день.
Делаю в проекте свой public class MailChecker : IZennoExternalCode. Не понятно как к конкретному кубику привязать конкретный класс.
Зенка не видит его, видит только созданный по умолчанию Program.
Неужели на каждый кубик нужно делать новый проект?
 
Классы написанные в проект VS не доступны в зенопостере, можно длл сделанную подкинуть в постер и через c# сниппет или общий код обращаться к этим классам
 
  • Спасибо
Реакции: Nick и tryinfinity
Еще прикол в том, что GptChat с пеной у рта мне доказывает, что при привязке dll через кубик "проект Visual Studio" зенка должна спрашивать какой из классов из этой библы следует использовать)
 
Еще прикол в том, что GptChat с пеной у рта мне доказывает, что при привязке dll через кубик "проект Visual Studio" зенка должна спрашивать какой из классов из этой библы следует использовать)
если просто сделать привязку длл к кубику то он просто запуститься через точку входа Program и выполнит чё там было. А надо именно dll через ссылки из GAC добавить в проект, прописать в юзингах неймспейс и тогда уже через c# кубик обращатсья к классам как делается обращение к классам из общего кода, но надо так же понимать что если dll использует какие то сторонние библиотеки то их тоже подкидывать через ссылки надо и юзинги прописывать
 
если просто сделать привязку длл к кубику то он просто запуститься через точку входа Program и выполнит чё там было. А надо именно dll через ссылки из GAC добавить в проект, прописать в юзингах неймспейс и тогда уже через c# кубик обращатсья к классам как делается обращение к классам из общего кода, но надо так же понимать что если dll использует какие то сторонние библиотеки то их тоже подкидывать через ссылки надо и юзинги прописывать
Ну какой-то полуфабрикат тогда)
 
Вы просто вызываете функцию/метод dll или общего кода в C# экшене и этим заменяете все экшены.
Проект Visual Studio заменяет весь шаблон, но есть ограничения по наличию проброшенных объектов постера.
 
Вы просто вызываете функцию/метод dll или общего кода в C# экшене и этим заменяете все экшены.
Проект Visual Studio заменяет весь шаблон, но есть ограничения по наличию проброшенных объектов постера.
Вопрос был задан в разделе новичков, вот ничего не понятно, что вы посоветовали)
 
Это было занятие в группе китайского языка?
 
Еще прикол в том, что GptChat с пеной у рта мне доказывает, что при привязке dll через кубик "проект Visual Studio" зенка должна спрашивать какой из классов из этой библы следует использовать)
Клауде лучше советует
 
если просто сделать привязку длл к кубику то он просто запуститься через точку входа Program и выполнит чё там было. А надо именно dll через ссылки из GAC добавить в проект, прописать в юзингах неймспейс и тогда уже через c# кубик обращатсья к классам как делается обращение к классам из общего кода, но надо так же понимать что если dll использует какие то сторонние библиотеки то их тоже подкидывать через ссылки надо и юзинги прописывать
После запуска dll прогружается в память, что в последующем не дает заменять эту dll на заново скомпилированную, т.к. она занята другим процессом. Как быть?)
 
.Net не имеет API для выгрузки своих библиотек, но Win32 для обычных - имеет, только перед этим надо хорошо знать этот .Net, что происходит, что надо правильно остановить, где надо правильно подчистить...
Из-за подобного и используется переходник отладки VS/PM, который запускается и завершается вместе с dll, но и имеет ограниченное кол-во проброшенных объектов постера (из-за чего и постоянные null).
 
После запуска dll прогружается в память, что в последующем не дает заменять эту dll на заново скомпилированную, т.к. она занята другим процессом. Как быть?)
Закрыть PM, заменить dll и заново запустить PM.
Что бы не мучится и постоянно не закрывать PM - использовать общий код. Пишем код в VS и вставляем классы в Общий код. Я себе для этих задач сделал компилятор, который весь код VS превращает в простыню для Общего кода PM.
 
  • Спасибо
Реакции: Nick и djaga
Нашел решение через загрузку 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);
}
 
  • Спасибо
Реакции: Nick и djaga
Закрыть PM, заменить dll и заново запустить PM.
Что бы не мучится и постоянно не закрывать PM - использовать общий код. Пишем код в VS и вставляем классы в Общий код. Я себе для этих задач сделал компилятор, который весь код VS превращает в простыню для Общего кода PM.
Может, опубликуете репозиторий и описание в отдельной статье? Тут какой-то очередной конкурс проводится, ещё и подзаработать можно...
 

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