Compilar desde el código fuente
Requisitos
- SDK de .NET 10 — la
versión exacta la fija
global.jsonen la raíz del repositorio - Visual Studio con la carga de trabajo Desarrollo para el escritorio con C++ (la compilación Native AOT enlaza con las herramientas de MSVC)
- El controlador ViGEmBus en tiempo de ejecución
Compilar y ejecutar (desarrollo)
dotnet build
dotnet run --project src/Rodenstick.App
Compilación de release (Native AOT)
dotnet publish src/Rodenstick.App -c Release -r win-x64
El ejecutable nativo autocontenido queda en
src/Rodenstick.App/bin/Release/net10.0/win-x64/publish/rodenstick.exe.
No hace falta ningún runtime de .NET en la máquina de destino.
Pruebas
dotnet test
El formato se comprueba contra el .editorconfig de la raíz, y los avisos son
errores (TreatWarningsAsErrors en Directory.Build.props):
dotnet format --verify-no-changes
Instalador
El script de Inno Setup es installer/rodenstick_inno.iss; compílalo con Inno
Setup 6 o posterior después de publicar la compilación de release:
ISCC.exe installer/rodenstick_inno.iss
El script empaqueta el instalador del controlador ViGEmBus, que no se
guarda en el repositorio (es un binario de terceros, no se compila desde el
código). Descárgalo una vez antes de compilar y colócalo junto al script como
installer/ViGEmBus_1.22.0_x64_x86_arm64.exe:
Para empaquetar un controlador más reciente, descarga esa release y actualiza
la definición ViGEmBusSetup de la cabecera del .iss con el nuevo nombre de
archivo.
Documentación
Los dos conjuntos de documentación se compilan y publican juntos mediante el
workflow pages en cada push a main; los comandos siguientes reproducen esa
compilación en local.
Referencia de la API (Doxygen)
Se genera a partir de los comentarios XML /// de los miembros públicos.
Instala Doxygen y
Graphviz (añade Graphviz al PATH para que
se dibujen los diagramas) y ejecuta:
cd docs/doxygen
doxygen Doxyfile
El HTML queda en docs/api/html; abre index.html para leerlo. La copia
publicada está en https://hectoraal.github.io/Rodenstick/api/.
Sitio de documentación (MkDocs)
El sitio bilingüe se construye a partir de los árboles docs/en y docs/es:
pip install mkdocs-material mkdocs-static-i18n
mkdocs serve
mkdocs serve sirve una vista previa en http://127.0.0.1:8000 con recarga en
caliente; mkdocs build --strict genera site/ y es lo que ejecuta el
workflow.
Cada página existe en los dos idiomas con el mismo nombre de archivo. Un cambio en la documentación toca los dos árboles en el mismo commit, o el sitio en español recurre en silencio a la página en inglés.
Sincronización de la wiki
Las wikis de Codeberg y GitHub son copias de solo lectura de esta carpeta
docs/, proyectadas por scripts/sync-wiki.ps1 (ejecútalo después de que los
cambios de documentación lleguen a main). Nunca edites páginas de la wiki
directamente: la siguiente sincronización las sobrescribe.
Requisito previo, una vez por equipo: las wikis son repositorios git aparte que solo empiezan a existir cuando se crea la primera página, así que activa la wiki en la configuración del repositorio y crea cualquier página desde la interfaz web antes de la primera sincronización, o el clonado falla.
Estructura del proyecto
src/Rodenstick.Core— lógica independiente de la plataforma (configuración, localización, mapeo, orquestación de la captura)src/Rodenstick.Platform.Windows— implementaciones Win32 y ViGEm de las abstracciones de Coresrc/Rodenstick.App— interfaz Avalonia y raíz de composicióntests/Rodenstick.Core.Tests— pruebas xUnit de Core
Números de versión
La versión vive en Directory.Build.props y se repite en tres sitios que hay
que actualizar con ella:
installer/rodenstick_inno.iss(MyAppVersion)src/Rodenstick.App/app.manifest(assemblyIdentity version)docs/doxygen/Doxyfile(PROJECT_NUMBER)