Fehlende Sekundärsprachen-Dateien bei ClickOnce-Veröffentlichungen
Eine .NET 8.0 Konsolenanwendung, die IronOCR mit einem Sekundärsprachpaket (Spanisch, Japanisch usw.) verwendet, läuft innerhalb von Visual Studio einwandfrei, aber beim Lauf mit ClickOnce nach Veröffentlichung gibt es Fehler. Die Sprachdatendateien gelangen nie in das Veröffentlichungs-Output.
IronOcr.Exceptions.LanguagePackException:
Please install the NuGet Package IronOcr.Languages.Spanish...
Error: 'The file Spanish.ocrdata was not found'
ClickOnce veröffentlicht nur, was es explizit weiß. Sekundärsprachige .ocrdata Dateien werden nicht automatisch erkannt oder gebündelt, daher werden sie beim Deployment stillschweigend weggelassen, obwohl das Paket installiert ist.
Lösung
Markieren Sie die Sprachpaketdateien zur Veröffentlichung, damit ClickOnce sie in die Bereitstellung überträgt. Wählen Sie die Option, die zu Ihrem Projekt passt.
Option 1: Markieren Sie jede Datei als Inhalt
Finden Sie die .ocrdata Dateien in Ihrem Build-Ausgabeordner, üblicherweise:
bin\Debug\net8.0\OcrData
Für jede Datei im OcrData Ordner setzen Sie:
- Build Action:
Content - In Ausgabeverzeichnis kopieren:
Copy if newer
Das kopiert die Dateien in den Build-Ordner und zieht sie in den ClickOnce Veröffentlichungsprozess.
Option 2: Einschließen in das .csproj
Wenn der Ordner automatisch generiert oder groß ist, bearbeiten Sie das .csproj, um jede .ocrdata Datei rekursiv einzuschließen, anstatt jede einzeln in der UI zu verwalten:
<ItemGroup>
<Content Include="OcrData\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="OcrData\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
Das Glob hält die neuen Sprachdateien synchron, ohne die Projektreferenzen zu berühren, wann immer sich der Ordner ändert.

