ETStudio
- ETStudio
Pre-dependence
- Visual Studio 2022
- DevExpress 23.2.5: DevExpressComponentsBundleSetup-23.2.5.exe.zip.
- You can use the Trial version for development first .
- ETStudio computer software: the latest version of EtStudioInstall.exe, then install.
Project configuration
Download the Demo library
- Project: etstudio-demo.zip
Debug the Demo library
- Open with Visual Studio 2022
ETStudio.Demo.slnproject, after the project is opened, it should have the following structure: - exist Debugger right-click on the project and turn it Debugger set as startup item
- Right-click Debugger project, Select property>Configuration Properties>debug>Order set as
C:\Program Files\XYuAuto\ETStudio\ETStudio.exe,Work Directory set asC:\Program Files\XYuAuto\ETStudio\,Debug type set as Hybrid (.NET Core). As shown in the picture: - Right click in sequence Debugger>generate or Regenerate, build Demo project.
- Configure the demo library to load the host machine
- Open with a text editor
./plugins.jsonfor details, see [Introduction to plugins.json structure]
- Open with a text editor
- copy
./plugins.jsonarriveC:\Program Files\XYuAuto\ETStudio\directory, let the upper computer load when running Demo module. - Configure the project as x64 and click Run to debug.
Development requirements
- UI is based on C#Developed by WPF.
- Please use UI control DevExpress, unless DevExpress none in.
- Please use English in all text in the demo interface.
- Code Specification.
Development Guide
Interface
- The interface should be in Views definition in the directory
Data
- The data structure used should be defined Models in the directory
Put interface interaction logic in the ViewModels directory
Protocol logic
- Protocols and other logic should be put into Services in the directory.
Project Document Management
When creating a computer project, the user will select an empty directory as the project directory and ETStudio.ets the project files are stored in this directory, and all files related to the project (such as: A2L files, ECU decrypted dll files, etc.) should be placed in this directory.
Introduction to plugins json structure
Data structure diagram

plugins.json structure diagram

There are two display types plugin cases in the above file:
- Integrated above the main interface (XCP) and displayed in large icons.
- Integrate into Tools → Plugins (PluginDemo).
Table 1 Plugin parameter analysis
| Parameters | Analysis |
|---|---|
| type | Can be "mainwindow" or any other arbitrary string or omitted: 1. If and only if "mainwindow" when displayed in the form of a large icon above the interface.2. Other situations will be displayed in Tools → Plugins. ![]() |
| name | Icon names such as XCP and PluginDemo.![]() |
| path | dll Specific path. |
| className | Call class name. |
| icon | Only Base64 data in PNG format is supported. Prefixes need to be deleted "data:image/png;base64,",reserve "iVBORw0KGgoAAA...". Use the default icon when empty. |
| Items | List of feature buttons that need integration. |
Table 2 items parameter analysis
| Parameters | Analysis |
|---|---|
| type | Can be "CallFunction" or any other arbitrary string or omitted: 1. When "CallFunction" when called, the name method of className in Table 1 is called. 2. In other cases, interfaces will be created based on subsequent configurations. |
| loc | When type does not "CallFunction" enabled to create an interface with name. |
| name | 1. When type is "CallFunction" when called, the name method of className in Table 1 is called. 2. When the type is other cases, the interface will be created based on the subsequent configuration. |
| title | Shows the button name. |
| Hint | Mouse suspension displays information.![]() |
| icon | Only Base64 data in PNG format is supported. Prefixes need to be deleted "data:image/png;base64,",reserve "iVBORw0KGgoAAA...". Use the default icon when empty. |
Introduction to Profile file structure

The red frame can be regarded as a fixed writing method.IModule the interface comes from Prism.Modularity.
- Calling methods through CallFunction: Change the method modifier to
public static, similar to the exampleCallFunction1andCallFunction2. - Display the interface and hand it over to the upper computer for management: refer to
OnInitializedcode to register the main view:
containerProvider.Resolve<IMenuMgmt>().RegMenuBtnView("DemoLoc","DemoName","DemoComment", typeof(DemoView), null, null);
-
If you need to subscribe to an event, you can refer to the event registration code in OnInitialized PreviewSaveProjectConfigurationEvent: Project file saving event ProjectConfigNewLoadStatusChanged: Project file switching event SoftwareCloseEvent: Uploader shutdown event
-
For specific details, please refer to the Demo project
-









