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>
Das Glob hält die neuen Sprachdateien synchron, ohne die Projektreferenzen zu berühren, wann immer sich der Ordner ändert.
Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.