Faltando Arquivos de Linguagem Secundária em Publicações ClickOnce
Um aplicativo de console .NET 8.0 que usa o IronOCR com um pacote de linguagem secundária (espanhol, japonês, etc.) funciona bem dentro do Visual Studio mas dá erro em tempo de execução uma vez publicado com ClickOnce. Os arquivos de dados de linguagem nunca chegam à saída de publicação.
IronOcr.Exceptions.LanguagePackException:
Please install the NuGet Package IronOcr.Languages.Spanish...
Error: 'The file Spanish.ocrdata was not found'
ClickOnce só publica o que conhece explicitamente. Arquivos de .ocrdata de linguagem secundária não são reconhecidos ou incorporados automaticamente, então são silenciosamente eliminados da implantação, embora o pacote esteja instalado.
Solução
Marque os arquivos de pacote de linguagens para publicação para que ClickOnce os leve à implantação. Escolha a opção que melhor se adapta ao seu projeto.
Opção 1: Marcar Cada Arquivo Como Conteúdo
Localize os arquivos .ocrdata na saída da compilação, tipicamente:
bin\Debug\net8.0\OcrData
Para cada arquivo dentro da pasta OcrData, defina:
- Ação de Compilação:
Content - Copiar para o Diretório de Saída:
Copy if newer
Isso copia os arquivos para a pasta de compilação e os leva ao processo de publicação ClickOnce.
Opção 2: Incluí-los na .csproj
Quando a pasta é gerada automaticamente ou é grande, edite o .csproj para pegar todos os arquivos .ocrdata recursivamente em vez de gerenciar cada um na interface do usuário:
<ItemGroup>
<Content Include="OcrData\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="OcrData\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
O globo mantém novos arquivos de linguagem em sincronia sem tocar em referências de projeto sempre que a pasta mudar.

