ZennoDroid + Visual Studio

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 018
Благодарностей
540
Баллы
113
Всем привет, собственно вопрос в сабже, мб есть у кого готовое решение как одно к другому подрубить что бы кодить по человечески, как в зеннопостере, или это что то на грани фантастики?)
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 165
Благодарностей
745
Баллы
113
Если создать проект с настройками как ниже и поменять пути до дройта не сработает? У меня просто дройда нет, проверить не могу
  1. Создать проект библиотека классов
  2. В файле .csproj приводим к виду:
    C#:
    <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
    <TargetFramework>net4.8</TargetFramework>
    </PropertyGroup>
    
    <ItemGroup>
    <Reference Include="ZennoLab.CommandCenter">
    <HintPath>$(ZennoPosterDllPath)\ZennoLab.CommandCenter.dll</HintPath>
    <Private>false</Private>
    </Reference>
    <Reference Include="ZennoLab.Emulation">
    <HintPath>$(ZennoPosterDllPath)\ZennoLab.Emulation.dll</HintPath>
    <Private>false</Private>
    </Reference>
    <Reference Include="ZennoLab.InterfacesLibrary">
    <HintPath>$(ZennoPosterDllPath)\ZennoLab.InterfacesLibrary.dll</HintPath>
    <Private>false</Private>
    </Reference>
    </ItemGroup>
    
    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <StartAction>Program</StartAction>
    <StartProgram>$(ZennoPosterDllPath)\ZennoLab.CodeRunner.exe</StartProgram>
    <StartArguments>50606 "$(MSBuildThisFileDirectory)bin\Debug\net4.8\$(MSBuildProjectName).dll" -sp "$(USER_HOME)\AppData\Roaming\ZennoLab\ZennoPoster\7" --run-external-dll</StartArguments>
    </PropertyGroup>
    
    </Project>
  3. Создаем файл Program.cs и наследуем его от интерфейса IZennoExternalCode:
    C#:
    public class Program : IZennoExternalCode
    {
    
        public int Execute(Instance instance, IZennoPosterProjectModel project)
        {
            // код проекта
            return 0;
        }
    }
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 018
Благодарностей
540
Баллы
113
Если создать проект с настройками как ниже и поменять пути до дройта не сработает? У меня просто дройда нет, проверить не могу
  1. Создать проект библиотека классов
  2. В файле .csproj приводим к виду:
    C#:
    <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
    <TargetFramework>net4.8</TargetFramework>
    </PropertyGroup>
    
    <ItemGroup>
    <Reference Include="ZennoLab.CommandCenter">
    <HintPath>$(ZennoPosterDllPath)\ZennoLab.CommandCenter.dll</HintPath>
    <Private>false</Private>
    </Reference>
    <Reference Include="ZennoLab.Emulation">
    <HintPath>$(ZennoPosterDllPath)\ZennoLab.Emulation.dll</HintPath>
    <Private>false</Private>
    </Reference>
    <Reference Include="ZennoLab.InterfacesLibrary">
    <HintPath>$(ZennoPosterDllPath)\ZennoLab.InterfacesLibrary.dll</HintPath>
    <Private>false</Private>
    </Reference>
    </ItemGroup>
    
    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <StartAction>Program</StartAction>
    <StartProgram>$(ZennoPosterDllPath)\ZennoLab.CodeRunner.exe</StartProgram>
    <StartArguments>50606 "$(MSBuildThisFileDirectory)bin\Debug\net4.8\$(MSBuildProjectName).dll" -sp "$(USER_HOME)\AppData\Roaming\ZennoLab\ZennoPoster\7" --run-external-dll</StartArguments>
    </PropertyGroup>
    
    </Project>
  3. Создаем файл Program.cs и наследуем его от интерфейса IZennoExternalCode:
    C#:
    public class Program : IZennoExternalCode
    {
    
    public int Execute(Instance instance, IZennoPosterProjectModel project)
    {
    // код проекта
    return 0;
    }
    }
Я что то подобное и сделал, но в итоге доступ есть только к тем методам которые реализованы в зенопостере, то есть доступа
instance.DroidInstance нету
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
378
Благодарностей
269
Баллы
63
Я что то подобное и сделал, но в итоге доступ есть только к тем методам которые реализованы в зенопостере, то есть доступа
instance.DroidInstance нету
Нужно добавить ссылку на ZennoDroid.Interface
C#:
<Reference Include="ZennoDroid.Interface">
  <HintPath>$(ZennoDroidDllPath)\ZennoDroid.Interface.dll</HintPath>
</Reference>
и добавить using
C#:
using ZennoLab.InterfacesLibrary.ZennoDroid;
using ZennoLab.InterfacesLibrary.ZennoDroid.Enums;
 
  • Спасибо
Реакции: Sherminator

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 018
Благодарностей
540
Баллы
113
Нужно добавить ссылку на ZennoDroid.Interface
C#:
<Reference Include="ZennoDroid.Interface">
  <HintPath>$(ZennoDroidDllPath)\ZennoDroid.Interface.dll</HintPath>
</Reference>
и добавить using
C#:
using ZennoLab.InterfacesLibrary.ZennoDroid;
using ZennoLab.InterfacesLibrary.ZennoDroid.Enums;
Спасибо, сделал, а какой мне в итоге интерфейс в классе Program реализовывать? Если реализовать тот что в посте выше указан (IZennoExternalCode) то доступа к DroidInstance все равно нету, если не затруднит, можно пример класса Program и метода Execute
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
378
Благодарностей
269
Баллы
63
Спасибо, сделал, а какой мне в итоге интерфейс в классе Program реализовывать? Если реализовать тот что в посте выше указан (IZennoExternalCode) то доступа к DroidInstance все равно нету, если не затруднит, можно пример класса Program и метода Execute
C#:
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ZennoDroid;

namespace ClassLibrary1
{
    public class Program : IZennoExternalCode
    {
        public int Execute(Instance instance, IZennoPosterProjectModel project)
        {
            var droid = instance.DroidInstance;
            droid.Action.SelectByIndex(0);           
            droid.Action.Start(false);         

            return 0;
        }
    }
}
 
  • Спасибо
Реакции: Sherminator

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 018
Благодарностей
540
Баллы
113
C#:
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ZennoDroid;

namespace ClassLibrary1
{
    public class Program : IZennoExternalCode
    {
        public int Execute(Instance instance, IZennoPosterProjectModel project)
        {
            var droid = instance.DroidInstance;
            droid.Action.SelectByIndex(0);         
            droid.Action.Start(false);       

            return 0;
        }
    }
}
Именно так я и попробовал, если не сложно, скинь пожалуйста стоковый солюшн где у тебя это всё фурычит
110203
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
378
Благодарностей
269
Баллы
63
Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)

Образец прикрепил. Не тестировалось (кроме выбора и запуска девайса), не проверялось, гарантировать работоспособность не могу.

1691407733047.png
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: Sherminator

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 018
Благодарностей
540
Баллы
113
Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)

Образец прикрепил. Не тестировалось, не проверялось, гарантировать работоспособность не могу.

Посмотреть вложение 110204
Да, переделал, перепроверил.
2023-08-07_14-52-10.png

Вот содержимое файла ccsproj

C#:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net4.8</TargetFramework>
</PropertyGroup>

<ItemGroup>
<Reference Include="ZennoLab.CommandCenter">
<HintPath>$(ZennoPosterDllPath)\ZennoLab.CommandCenter.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="ZennoLab.Emulation">
<HintPath>$(ZennoPosterDllPath)\ZennoLab.Emulation.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="ZennoLab.InterfacesLibrary">
<HintPath>$(ZennoDroidDllPath)\ZennoLab.InterfacesLibrary.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="ZennoDroid.Interface">
<HintPath>$(ZennoDroidDllPath)\ZennoDroid.Interface.dll</HintPath>
</Reference>
</ItemGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartAction>Program</StartAction>
<StartProgram>$(ZennoPosterDllPath)\ZennoLab.CodeRunner.exe</StartProgram>
<StartArguments>50606 "$(MSBuildThisFileDirectory)bin\Debug\net4.8\$(MSBuildProjectName).dll" -sp "$(USER_HOME)\AppData\Roaming\ZennoLab\ZennoPoster\7" --run-external-dll</StartArguments>
</PropertyGroup>

</Project>
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
378
Благодарностей
269
Баллы
63
  • Спасибо
Реакции: Sherminator

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 018
Благодарностей
540
Баллы
113

Kulya

Client
Регистрация
11.09.2016
Сообщения
177
Благодарностей
48
Баллы
28
Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)

Образец прикрепил. Не тестировалось (кроме выбора и запуска девайса), не проверялось, гарантировать работоспособность не могу.

Посмотреть вложение 110204
При запуске отладки возникает такая ошибка

System.IO.FileNotFoundException: "Не удалось загрузить файл или сборку "AndroidSdk, Version=0.1.17.19215, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл."
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
378
Благодарностей
269
Баллы
63
  • Спасибо
Реакции: Kulya

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