Archivos de Idiomas Secundarios Faltantes en Publicaciones ClickOnce
Una aplicación de consola .NET 8.0 que utiliza IronOCR con un paquete de idioma secundario (español, japonés, etc.) funciona bien dentro de Visual Studio pero falla en tiempo de ejecución una vez publicada con ClickOnce. Los archivos de datos de idioma nunca llegan a la salida de la publicación.
IronOcr.Exceptions.LanguagePackException:
Please install the NuGet Package IronOcr.Languages.Spanish...
Error: 'The file Spanish.ocrdata was not found'
ClickOnce solo publica lo que conoce explícitamente. Los archivos de idioma secundario .ocrdata no se reconocen ni se agrupan automáticamente, por lo que se eliminan silenciosamente del despliegue incluso cuando el paquete está instalado.
Solución
Marque los archivos del paquete de idioma para la publicación, para que ClickOnce los incluya en el despliegue. Elija la opción que se ajuste a su proyecto.
Opción 1: Marcar Cada Archivo como Contenido
Localice los archivos .ocrdata en la salida de su compilación, típicamente:
bin\Debug\net8.0\OcrData
Para cada archivo dentro de la carpeta OcrData, configure:
- Acción de compilación:
Content - Copiar al directorio de salida:
Copy if newer
Eso copia los archivos a la carpeta de compilación y los introduce en el proceso de publicación ClickOnce.
Opción 2: Inclúyalos en el .csproj
Cuando la carpeta se genera automáticamente o es grande, edite el .csproj para detectar cada archivo .ocrdata recursivamente en lugar de gestionar cada uno en la UI:
<ItemGroup>
<Content Include="OcrData\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="OcrData\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
El glob mantiene los nuevos archivos de idioma sincronizados sin tocar las referencias del proyecto siempre que la carpeta cambie.

