Compilar y publicar
De la versión en Directory.Build.props al instalador:
flowchart LR
V["Versión en<br/>Directory.Build.props"] --> B["dotnet build<br/>dotnet test"]
B --> P["dotnet publish"]
P --> D[("installer\publish\")]
D --> I["ISCC.exe"]
I --> S(["Instalador<br/>Setup-x.y.z.exe"])
class D io
class S ok
Requisitos
- Windows 11 de 64 bits. La aplicación usa APIs de audio de Windows y WPF.
- SDK de .NET 10.
- Visual Studio con soporte de .NET 10 y de soluciones
.slnx, o cualquier editor con la CLI dedotnet.
Estructura de la solución
| Ruta | Contenido |
|---|---|
LoopbackTranscriber.slnx |
La solución, con los dos proyectos. |
Directory.Build.props |
Versión y analizadores. Afecta a todos los proyectos. |
.editorconfig |
Ajustes de las reglas de análisis. |
.config\dotnet-tools.json |
DocFX como herramienta local, para esta documentación. |
LoopbackTranscriber\ |
La aplicación: WinExe, net10.0-windows, WPF. |
LoopbackTranscriber.Tests\ |
Los tests: xUnit, net10.0-windows, WPF. |
installer\ |
El script de Inno Setup. Dentro se generan publish\ (la publicación) y Output\ (el instalador). |
docs\ |
Esta documentación, en español e inglés. |
LICENSE |
Licencia MIT. |
Compilar y probar
dotnet build LoopbackTranscriber.slnx -c Release
dotnet test LoopbackTranscriber.slnx -c Release
En Visual Studio: Compilar → Compilar solución y Prueba → Ejecutar todas las pruebas. Hay más detalles en Tests.
Reglas de calidad
Directory.Build.props se aplica a los dos proyectos:
| Propiedad | Valor | Efecto |
|---|---|---|
Version |
1.1.0 |
Versión del ensamblado y del ejecutable. El instalador la lee del .exe. |
EnableNETAnalyzers |
true |
Analizadores de .NET activados. |
AnalysisLevel |
latest-recommended |
Conjunto recomendado de la última versión. |
TreatWarningsAsErrors |
true |
Cualquier aviso del compilador o de los analizadores rompe la compilación. |
Deterministic |
true |
Compilaciones reproducibles. |
.editorconfig ajusta algunas reglas:
| Ámbito | Regla | Motivo |
|---|---|---|
| Todo el código | CA1822.api_surface = private, internal |
Sugiere static solo en miembros privados e internos, no en la API pública de los ViewModels, que usan los bindings. |
| Todo el código | CA1716 desactivada |
Permite nombres de espacios de nombres y miembros que coinciden con palabras reservadas de otros lenguajes. |
| Tests | CA1707 desactivada |
Nombres de test con guiones bajos: Metodo_Situacion_Resultado. |
| Tests | CA1861 desactivada |
Arrays constantes como argumentos en los tests. |
| Tests | CA2255 desactivada |
Permite el [ModuleInitializer] que prepara el entorno de los tests. |
Además, cada compilación ejecuta la comprobación de localización: una clave inexistente o una traducción que falta es un error.
Detalles del proyecto
App.xamlse compila comoPage, no comoApplicationDefinition, para usar elProgram.Mainpropio que atiende a los procesos auxiliares.InternalsVisibleTo LoopbackTranscriber.Tests: los tests acceden a los tiposinternal, como los filtros o el protocolo de los workers.THIRD-PARTY-NOTICES.txtse copia a la salida y a la publicación.- Ajustes de ejecución: GC no concurrente,
TieredPGOdesactivado ySystem.GC.ConserveMemory = 5. Ver Visión general.
Publicar
El perfil Properties\PublishProfiles\FolderProfile.pubxml es el que usa el instalador:
| Propiedad | Valor |
|---|---|
| Configuración | Release |
RuntimeIdentifier |
win-x64 |
SelfContained |
true: incluye el runtime de .NET, no hace falta instalarlo |
PublishSingleFile |
false: las bibliotecas nativas de Whisper y LLama van como ficheros |
PublishReadyToRun |
false |
PublishDir |
..\installer\publish\ |
dotnet publish LoopbackTranscriber\LoopbackTranscriber.csproj -p:PublishProfile=FolderProfile
O, en Visual Studio: clic derecho en el proyecto → Publicar → FolderProfile.
El paso siguiente es generar el instalador.
Cambiar la versión
- Cambia
<Version>enDirectory.Build.props. - Publica.
- Compila el instalador. Toma la versión del
LoopbackTranscriber.exepublicado, así que no hay que tocarlo.