- Регистрация
- 10.09.2021
- Сообщения
- 1 669
- Реакции
- 964
- Баллы
- 113
Всем привет, собственно вопрос в сабже, мб есть у кого готовое решение как одно к другому подрубить что бы кодить по человечески, как в зеннопостере, или это что то на грани фантастики?)
<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>
public class Program : IZennoExternalCode
{
public int Execute(Instance instance, IZennoPosterProjectModel project)
{
// код проекта
return 0;
}
}
Я что то подобное и сделал, но в итоге доступ есть только к тем методам которые реализованы в зенопостере, то есть доступаЕсли создать проект с настройками как ниже и поменять пути до дройта не сработает? У меня просто дройда нет, проверить не могу
- Создать проект библиотека классов
- В файле .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>- Создаем файл Program.cs и наследуем его от интерфейса IZennoExternalCode:
C#:public class Program : IZennoExternalCode { public int Execute(Instance instance, IZennoPosterProjectModel project) { // код проекта return 0; } }
Нужно добавить ссылку на ZennoDroid.InterfaceЯ что то подобное и сделал, но в итоге доступ есть только к тем методам которые реализованы в зенопостере, то есть доступа
instance.DroidInstance нету
<Reference Include="ZennoDroid.Interface">
<HintPath>$(ZennoDroidDllPath)\ZennoDroid.Interface.dll</HintPath>
</Reference>
using ZennoLab.InterfacesLibrary.ZennoDroid;
using ZennoLab.InterfacesLibrary.ZennoDroid.Enums;
Спасибо, сделал, а какой мне в итоге интерфейс в классе Program реализовывать? Если реализовать тот что в посте выше указан (IZennoExternalCode) то доступа к DroidInstance все равно нету, если не затруднит, можно пример класса Program и метода ExecuteНужно добавить ссылку на ZennoDroid.Interface
и добавить usingC#:<Reference Include="ZennoDroid.Interface"> <HintPath>$(ZennoDroidDllPath)\ZennoDroid.Interface.dll</HintPath> </Reference>
C#:using ZennoLab.InterfacesLibrary.ZennoDroid; using ZennoLab.InterfacesLibrary.ZennoDroid.Enums;
Спасибо, сделал, а какой мне в итоге интерфейс в классе Program реализовывать? Если реализовать тот что в посте выше указан (IZennoExternalCode) то доступа к DroidInstance все равно нету, если не затруднит, можно пример класса Program и метода Execute
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;
}
}
}
Именно так я и попробовал, если не сложно, скинь пожалуйста стоковый солюшн где у тебя это всё фурычит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; } } }
Да, переделал, перепроверил.Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)
Образец прикрепил. Не тестировалось, не проверялось, гарантировать работоспособность не могу.
Посмотреть вложение 110204

<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>
<StartProgram>$(ZennoPosterDllPath)\
Такого быть не должно. Так будет выполняться через ZennoPoster, а он про ZennoDroid ничего не знает. Я прикрепил пример<HintPath>$(ZennoPosterDllPath)\
Ну как обычно, дело было не в бобине, всё зашуршало, еще раз спасибо за уделенное времяТакого быть не должно. Так будет выполняться через ZennoPoster, а он про ZennoDroid ничего не знает. Я прикрепил пример
Пути к либам правильно указаны? Тут ошибок нет?
Для ZennoDroid нужно использовать $(ZennoDroidDllPath), а не $(ZennoPosterDllPath)
Образец прикрепил. Не тестировалось (кроме выбора и запуска девайса), не проверялось, гарантировать работоспособность не могу.
Посмотреть вложение 110204
Похоже ZennoDroid 2.3.3 установлен. Эта проблема исправлена в 2.3.4.Не удалось загрузить файл или сборку "AndroidSdk, Version=0.1.17.19215


