Saltar a contenido

Compilar desde el código fuente

Requisitos

  • SDK de .NET 10 — la versión exacta la fija global.json en 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 Core
  • src/Rodenstick.App — interfaz Avalonia y raíz de composición
  • tests/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)