ZennoDroid + Visual Studio

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 669
Реакции
964
Баллы
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;
        }
    }
 
Если создать проект с настройками как ниже и поменять пути до дройта не сработает? У меня просто дройда нет, проверить не могу
  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 нету
 
Я что то подобное и сделал, но в итоге доступ есть только к тем методам которые реализованы в зенопостере, то есть доступа
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
Нужно добавить ссылку на 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
 
Спасибо, сделал, а какой мне в итоге интерфейс в классе 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
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
 
Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)

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

1691407733047.png
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: Sherminator
Пути к либам правильно указаны? Тут ошибок нет?
Для 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>
 
  • Спасибо
Реакции: Sherminator
Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)

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

Посмотреть вложение 110204

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

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

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