Lingua
Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | Value |
|---|---|
| ID regola | MSTEST0088 |
| Title | L'inserimento della classe di test dell'host MSTest non è supportato dalla modalità di compilazione selezionata |
| Category | Usage |
| La modifica è dirompente o non dirompente | Non rompente |
| Abilitato per impostazione predefinita | Yes |
| Gravità predefinita | Error |
| introdotta nella versione | 4.5.0 |
| È presente una correzione del codice | No |
Cause
Si abilita l'inserimento della classe di test MSTest di proprietà dell'host tramite AddMSTestTestClassInjection dal pacchetto sperimentale MSTest.Extensions.Hosting, ma il progetto di test usa una modalità di compilazione non supportata.
La regola si applica alle impostazioni seguenti:
| Modalità costruzione | Setting |
|---|---|
| AOT nativo |
PublishAot è true. |
| Compilazione AOT |
RunAOTCompilation è true. |
| Generazione del codice sorgente MSTest |
EnableMSTestSourceGeneration è true. |
| Browser WebAssembly |
TargetPlatformIdentifier è browser, oppure RuntimeIdentifier contiene browser-wasm. |
Descrizione della regola
L'inserimento della classe di test di proprietà dell'host usa l'attivazione basata su reflection tramite Microsoft.Extensions.DependencyInjection. Tale percorso di attivazione non supporta Native AOT, la compilazione AOT, browser WebAssembly o la generazione del codice sorgente di MSTest.
L'analizzatore segnala questo errore sulle chiamate a AddMSTestTestClassInjection. Riconosce anche l'iniezione di proprietà dell'host abilitata tramite un assembly a cui viene fatto riferimento che registra l'operazione di registrazione, anche quando il progetto di test non chiama direttamente il metodo.
Questa regola è separata da MSTEST0063, che convalida i costruttori della classe di test. Un costruttore valido non rende compatibile l'iniezione gestita dall'host con una modalità di compilazione non supportata. L'API sperimentale produce anche la diagnostica MSTESTEXP; la soppressione di MSTESTEXP non elimina MSTEST0088 o risolve l'incompatibilità della modalità di compilazione.
La regola rimane abilitata come errore in ogni MSTestAnalysisMode, incluso None.
Come correggere le violazioni
Scegliere uno degli approcci seguenti:
- Per mantenere l'iniezione host-owned, usare una modalità di compilazione supportata. Disabilitare l'impostazione AOT o di generazione del codice sorgente applicabile o specificare come destinazione un runtime diverso dal browser WebAssembly.
- Per mantenere la modalità di compilazione selezionata, rimuovere la
AddMSTestTestClassInjectionregistrazione, incluse le registrazioni negli assembly di installazione host a cui si fa riferimento. Usare classi di test con un costruttore pubblico senza parametri o un costruttore pubblico che accetta solo un parametro esatto TestContext .
Non è disponibile alcuna correzione automatica del codice perché la risoluzione appropriata dipende dalla configurazione dell'host del tuo progetto di test e dai requisiti di distribuzione.
Quando eliminare gli errori
Non eliminare questa regola. La soppressione non rende compatibile l'iniezione dell'host basata sulla reflection con la modalità di compilazione selezionata.
Sopprimere un messaggio diagnostico
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0088.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.