Errore 14081 su Windows Server 2019: impossibile abilitare Client‑ProjFS e come risolvere

Su alcune installazioni di Windows Server 2019 l’abilitazione della feature Client‑ProjFS fallisce con l’errore 14081, bloccando l’installazione di Visual Studio 2022. In questa guida trovi diagnosi, cause più comuni e un percorso di ripristino sicuro in ambienti singoli o enterprise.

Indice

Panoramica del problema

Client‑ProjFS (Projected File System) è un componente del sistema operativo utilizzato da diversi strumenti di sviluppo per esporre contenuti “virtuali” come se fossero file e cartelle reali. Su alcune istanze di Windows Server 2019 il comando:

Enable‑WindowsOptionalFeature -Online -FeatureName Client-ProjFS

– oppure l’equivalente DISM – termina con Errore 14081: The referenced assembly could not be found. L’assenza di ProjFS può impedire l’installazione o il corretto funzionamento di Visual Studio 2022 e di altri strumenti che si appoggiano al driver prjflt.sys.

Sintomi e messaggi

  • Enable‑WindowsOptionalFeature -Online -FeatureName Client-ProjFS → esito Errore 14081.
  • dism /online /enable-feature /FeatureName:Client-ProjFS → stesso errore.
  • Installazione di Visual Studio 2022 che richiede ProjFS non completata o con workload che falliscono.
  • Nei log CBS/DISM possono comparire riferimenti a assembly mancanti o pacchetti non trovati (ERRORSXSASSEMBLY_MISSING, 0x80073701).

Cause probabili

  • Corruzione del Component Store (WinSxS) o rimozione di payload dall’immagine originale durante il provisioning o la creazione del template.
  • Edizione non supportata: ProjFS è presente sulle edizioni Desktop Experience; non è disponibile su Server Core.
  • Allineamento patch non coerente tra cumulativi/SSU della macchina e l’ISO o la sorgente usata per il repair.
  • Policy di servicing che impediscono di scaricare payload mancanti da Windows Update/WSUS.
  • Ambienti offline dove non è impostata una Local Source valida (Sources\sxs dell’ISO) per il recupero dei componenti.

Verifiche preliminari

Prima di intervenire, raccogli le prove che ti servono per scegliere la strada più breve verso la soluzione.

Conferma dell’edizione

ProjFS è disponibile sulle installazioni con interfaccia grafica. Verifica il tipo di installazione:

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').InstallationType
Atteso: 'Server' per Desktop Experience. 'Server Core' indica la variante Core.

Controllo della build

Assicurati di essere aggiornato. È consigliato essere almeno alla build 17763.4040 o successiva.

Get-ComputerInfo | Select-Object WindowsVersion, OsName, OsBuildNumber, OsHardwareAbstractionLayer
In alternativa:
systeminfo | findstr /i "OS Version"

Visibilità della feature

Controlla che la feature sia elencata e il suo stato attuale:

DISM /Online /Get-FeatureInfo /FeatureName:Client-ProjFS
oppure
Get-WindowsOptionalFeature -Online -FeatureName Client-ProjFS | Format-List

Tracce nei log

Quando l’errore è dovuto a componenti mancanti, i log CBS e DISM lo confermano. Analizza le ultime righe:

# Log CBS
Get-Content -Path "C:\Windows\Logs\CBS\CBS.log" -Tail 200

Log DISM

Get-Content -Path "C:\Windows\Logs\DISM\dism.log" -Tail 200 

Percorso di risoluzione consigliato

Di seguito un percorso safe, dal meno al più invasivo, con esiti attesi e note operative.

PassoDettagliEsito riportato
1. Verifica integrità del sistemasfc /scannowDISM /Online /Cleanup-Image /RestoreHealthNei casi osservati non ha risolto l’errore 14081.
2. Abilitazione manualedism /online /enable-feature /FeatureName:Client-ProjFSContinua a fallire con errore 14081 quando il payload è mancante.
3. In‑place upgrade o repairAvviare setup da ISO di Server 2019, opzione Upgrade, conservando ruoli e dati.Ripristina gli assembly mancanti. Da testare prima in ambiente di prova.
4. Verifica su installazione pulitaVM da ISO ufficiale, update applicati, quindi abilitazione di Client‑ProjFS.Funziona. Conferma che il problema è nell’immagine di origine/provisioning.

Controllo e ripristino di base

sfc /scannow
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth

Se RestoreHealth fallisce con “payload mancanti” o segue comunque l’errore 14081 durante l’abilitazione della feature, passa ai passaggi successivi.

Abilitazione della feature

# PowerShell
Enable‑WindowsOptionalFeature -Online -FeatureName Client-ProjFS -All -NoRestart

DISM

DISM /Online /Enable-Feature /FeatureName:Client-ProjFS /All /NoRestart 

Nota: l’opzione /All include eventuali prerequisiti della feature. Il riavvio è spesso necessario per caricare il filtro prjflt.

Ripristino da sorgente locale

In ambienti isolati o con policy che vietano l’accesso a Windows Update, indica una sorgente locale coerente con la build:

# Monta la ISO di Windows Server 2019 (lettera X:)
Usa la cartella 'sources\sxs' come repository di repair
DISM /Online /Enable-Feature /FeatureName:Client-ProjFS /All /LimitAccess /Source:X:\sources\sxs

Se RestoreHealth necessita di una sorgente:

DISM /Online /Cleanup-Image /RestoreHealth /LimitAccess /Source:X:\sources\sxs 

Assicurati che la source abbia lo stesso livello di patch della macchina; se è precedente, RestoreHealth può non riuscire a ricostruire il Component Store.

Aggiornamento in place

Quando sfc/DISM non ripristinano il payload, la via più rapida è un in‑place upgrade con ISO ufficiale della stessa edizione e lingua, selezionando l’opzione di mantenimento di ruoli, applicazioni e dati. Questo ricrea i componenti mancanti e normalizza WinSxS senza reimaging del server.

Buone pratiche:

  • Esegui uno snapshot/backup e verifica il catalogo dei driver di terze parti.
  • Verifica spazio libero su C: (almeno 15‑20 GB) e pending restart assenti.
  • Disabilita temporaneamente antivirus che interferiscono con operazioni DISM/servicing.

Verifica su installazione pulita

Per validare rapidamente il comportamento atteso, crea una VM pulita da ISO ufficiale, applica gli ultimi aggiornamenti e abilita Client‑ProjFS. Se funziona, la radice del problema sta nella golden image o nel processo di provisioning adottato on‑prem o in cloud.

Automazione con PowerShell

Per ambienti con molte macchine, automatizza la diagnosi e il ripristino in fasi:

  1. HealthCheck: SFC + DISM con raccolta log.
  2. SourceAware Enable: tenta l’abilitazione indicando la source se necessario.
  3. Report: esito per macchina, con suggerimento repair o redeploy.
param(
  [string]$LocalSource = "X:\sources\sxs",
  [switch]$LimitAccess
)

$report = [System.Collections.Generic.List[object]]::new()

function Test-DesktopExperience {
  $type = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').InstallationType
  return ($type -ne 'Server Core')
}

function Test-Build {
  $build = [int](Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').CurrentBuildNumber
  $ubr   = [int](Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').UBR
  [pscustomobject]@{
    Build = $build
    UBR   = $ubr
    Full  = "$build.$ubr"
  }
}

function Get-ServicingPolicy {
  $path = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Servicing'
  if (Test-Path $path) { Get-ItemProperty $path } else { $null }
}

function Enable-ProjFS {
  param([string]$Source, [switch]$LimitAccess)
  $args = '/Online','/Enable-Feature','/FeatureName:Client-ProjFS','/All','/NoRestart'
  if ($LimitAccess) { $args += '/LimitAccess' }
  if ($Source -and (Test-Path $Source)) { $args += "/Source:$Source" }
  Start-Process -FilePath dism.exe -ArgumentList $args -Wait -PassThru
}

Write-Host "== Verifica edizione =="
if (-not (Test-DesktopExperience)) {
  Write-Warning "Server Core: Client‑ProjFS non è disponibile su questa edizione."
  return
}

Write-Host "== Verifica build =="
$build = Test-Build
Write-Host "Build corrente:" $build.Full

Write-Host "== Health Check =="
sfc /scannow | Out-Null
DISM /Online /Cleanup-Image /RestoreHealth | Out-Null

Write-Host "== Tentativo abilitazione =="
$useLimit = $LimitAccess.IsPresent
$proc = Enable-ProjFS -Source $LocalSource -LimitAccess:$useLimit

$status = if ($proc.ExitCode -eq 0) { "OK" } else { "Fail ($($proc.ExitCode))" }
$report.Add([pscustomobject]@{ Computer = $env:COMPUTERNAME; Build = $build.Full; Status = $status })

$report | Format-Table -AutoSize

Integra lo script in un job di orchestrazione (ad esempio tramite PowerShell Remoting, System Center o pipeline CI/CD interna) e archivia CBS.log/dism.log come artefatti.

Ambienti senza accesso a internet

Se il server non può contattare Windows Update o se una policy di dominio applica il criterio Specify settings for optional component installation and component repair, verifica i valori nella chiave:

Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Servicing' |
  Select-Object UseWindowsUpdate, RepairContentServerSource, LocalSourcePath

Suggerimenti:

  • Imposta LocalSourcePath su una share di rete con il contenuto di sources\sxs coerente con la build.
  • Usa /LimitAccess per forzare DISM a non tentare Windows Update e a usare solo la source.
  • Allinea sempre ISO/source e macchina alle stesse CU/SSU per evitare mismatch di manifest.

Indicazioni per Visual Studio

  • Abilita Client‑ProjFS e riavvia il server prima di installare Visual Studio 2022.
  • Verifica che policy o software di sicurezza non blocchino il caricamento del filtro prjflt.
  • Se Visual Studio è già installato, ripara l’installazione dopo aver abilitato ProjFS per riallineare le dipendenze.

Verifiche finali

Al termine del ripristino esegui questi controlli.

# Stato della feature
Get-WindowsOptionalFeature -Online -FeatureName Client-ProjFS

Presenza del driver come filtro minifilter

fltmc filters | findstr /i prjflt

Servizio/driver

sc query prjflt

File del driver

Test-Path "C:\Windows\System32\drivers\prjflt.sys" 

Esito atteso: la feature risulta Enabled, prjflt appare tra i filtri attivi e il file del driver è presente.

Domande ricorrenti

È davvero incluso in Windows Server 2019?
Sì. L’errore 14081 segnala che l’assembly di riferimento non è stato trovato sul sistema, tipicamente perché il payload è stato rimosso o il Component Store è incoerente.

Serve per forza la versione con interfaccia grafica?
Sì: Client‑ProjFS è disponibile sulle edizioni Desktop Experience. Su Server Core la feature non è presente.

Posso risolvere senza reinstallare?
Spesso sì, indicando una source valida a DISM o eseguendo un in‑place upgrade di repair. Se il template di base ha rimosso i payload, può essere necessario ridistribuire un’immagine pulita.

Che ruolo ha la build minima suggerita?
Mantenere il server almeno alla build 17763.4040 o superiore riduce i casi di mismatch nei manifest e assicura correzioni note al servicing stack.

Checklist operativa

  • Conferma edizione Desktop Experience e build aggiornata.
  • Controlla la presenza della feature e analizza CBS/DISM per indizi di payload mancanti.
  • Esegui sfc e DISM RestoreHealth.
  • Tenta l’abilitazione con source locale e LimitAccess se necessario.
  • Se persiste, esegui un in‑place upgrade con ISO allineata.
  • Verifica prjflt e conferma l’installazione di Visual Studio 2022.
  • Per ambienti multipli, automatizza HealthCheck e reportistica; rivedi la pipeline di creazione delle immagini.

Approfondimento pratico sul provisioning

Il problema nasce spesso da pipeline che “snelliscono” il sistema rimuovendo payload di Features on Demand. Alcuni esempi tipici:

  • Uso di Image Servicing aggressivo su WIM/VHD con comandi come /StartComponentCleanup /ResetBase combinati a rimozioni selettive di feature.
  • Script di debloating che eliminano pacchetti ritenuti inutili per il ruolo server, ma necessari per scenari di sviluppo.
  • Template golden non aggiornati rispetto agli ultimi cumulativi, poi promossi in produzione con divergenze.

Raccomandazioni:

  • Mantieni una linea di base “dev‑ready” distinta se i server ospitano workload di sviluppo o build agent.
  • Documenta esplicitamente quali feature sono rimosse; aggiungi guard‑rails per bloccare la rimozione di ProjFS.
  • Integra controlli di conformità che eseguano DISM /Get-Features e segnalino differenze rispetto allo standard.

Riepilogo delle raccomandazioni

  • Edizione e build: Desktop Experience, build 17763.4040 o superiore.
  • Ripristino dell’immagine: se SFC/DISM non bastano, in‑place upgrade con ISO ufficiale allineata; in alternativa ridistribuzione da immagine pulita.
  • Sorgente locale: usa Sources\sxs e /LimitAccess in ambienti isolati.
  • Automazione: HealthCheck, report e remediation automatica con PowerShell.
  • Visual Studio: abilita ProjFS e riavvia prima dell’installazione; verifica il driver prjflt.

Conclusione

Client‑ProjFS è parte integrante di Windows Server 2019. Quando l’abilitazione fallisce con l’errore 14081, il motivo non è l’assenza della feature nel sistema operativo, ma la corruzione o la rimozione del relativo payload nell’immagine in uso. Una volta ripristinata la coerenza del Component Store — via RestoreHealth con source, via in‑place upgrade o tramite ridistribuzione da ISO pulita — la feature si abilita senza errori e Visual Studio 2022 può essere installato correttamente. Per evitare ricadute, rivedi i processi di creazione delle immagini e adotta controlli automatici che assicurino la presenza dei componenti essenziali prima della messa in esercizio.

Con questa procedura eliminerai l’errore 14081, ripristinerai il supporto ProjFS e standardizzerai il tuo parco server, riducendo tempi di fermo e incoerenze tra ambienti.

Indice