Installation
Required
Section titled “Required”| Requirement | Notes |
|---|---|
| .NET SDK 10.0 | Every project targets net10.0. No project declares its own target framework; it comes from Directory.Build.props at the repository root. |
| SQL Server 2019 or later | LocalDB is sufficient for development. The schema is deployed by script, not by Entity Framework migrations - see Database deployment. |
| PowerShell 7 | Only needed for the helper scripts under Database/operational/. |
Optional components
Section titled “Optional components”Each of these enables exactly one capability. The application starts and runs without any of them; the corresponding feature degrades in a defined way rather than failing unpredictably.
LibreOffice
Section titled “LibreOffice”Enables preview generation for Office formats - Word, Excel, PowerPoint and their open-format
equivalents. Docsentry invokes soffice to convert the document to PDF, then rasterises the
first page.
Configured by PreviewOptions:SofficePath. Leave it empty to let the application discover the
executable on the current platform, or set an absolute path when it is installed somewhere
unusual. PreviewOptions:SofficeTimeout bounds a single conversion.
Without it: Office documents upload, download, and version normally, but show no preview or thumbnail. Images and PDFs are unaffected, because they do not go through the converter.
Tesseract
Section titled “Tesseract”Enables optical character recognition, so scanned documents and image-only PDFs become searchable by their contents rather than only by filename and metadata.
Configured by the OCR options: TesseractPath and TessdataPrefix locate the engine and its
language data, Languages selects the trained models (eng+ara by default), TimeoutSeconds
bounds one document, and MaxImagePixels caps the raster size per page.
Without it: documents are stored and remain findable by filename, metadata, tags, and categories, but their text is never extracted. OCR status reports as failed when the engine cannot be reached - as distinct from pending, which means the job has not run yet.
ClamAV
Section titled “ClamAV”Provides antivirus scanning of uploaded content over TCP, by default on port 3310.
ClamAV is one backend among several. See Antivirus for the alternatives, including a hash-lookup service and a test scanner that recognises only the EICAR test string.
Without it: configure a different scanner kind. Do not leave a scanner configured and unreachable - scanning is fail-closed by design, so an unreachable scanner blocks access to content that has not been cleared rather than letting it through.
SQL Server Full-Text Search
Section titled “SQL Server Full-Text Search”Enables indexed content search. This is a SQL Server feature installed at the instance level, not something the application can turn on.
Without it: search still returns correct results. Docsentry detects that no full-text index
is available and falls back to a LIKE scan. That predicate has a leading wildcard, so it cannot
use an index and scans the candidate rows instead. On a small repository the difference is
invisible; on a large one it is the difference between a fast query and a slow one.
To check whether the feature is present on your instance:
SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled');A result of 0 means the feature is not installed and the fallback is the only available path.
See Search for how the choice is made at runtime.
Verifying the installation
Section titled “Verifying the installation”dotnet build Docsentry.slnx --configuration Releasedotnet test Docsentry.slnx --configuration ReleaseA clean build reports zero warnings and zero errors. If the database integration suite matters
to you, read the warning about DOCSENTRY_TEST_CONNECTION_STRING in
Quickstart before trusting a green run.