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.
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\sxsdell’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.
| Passo | Dettagli | Esito riportato |
|---|---|---|
| 1. Verifica integrità del sistema | sfc /scannow → DISM /Online /Cleanup-Image /RestoreHealth | Nei casi osservati non ha risolto l’errore 14081. |
| 2. Abilitazione manuale | dism /online /enable-feature /FeatureName:Client-ProjFS | Continua a fallire con errore 14081 quando il payload è mancante. |
| 3. In‑place upgrade o repair | Avviare 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 pulita | VM 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:
- HealthCheck: SFC + DISM con raccolta log.
- SourceAware Enable: tenta l’abilitazione indicando la source se necessario.
- 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\sxscoerente con la build. - Usa
/LimitAccessper 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
prjflte 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 /ResetBasecombinati 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-Featurese 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\sxse/LimitAccessin 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.
