L'attributo "CodeFile" non può essere utilizzato senza un attributo "Inherits"

Aug 22 2020

Ci sono 2 domande rilevanti su questo sito su questo problema, nessuna sembra andare nei dettagli o fornire una soluzione che si è dimostrata utile. Loro sono:

  • L'attributo "CodeFile" non può essere utilizzato senza un attributo "Inherits"
  • CodeFile di ASP.NET, CodeBehind e Inherits

Non sono sicuro di che tipo di progetto sia, credo che sia un ASP WebForms o ASP WebSite. Qualche persona più illuminata qui potrebbe porre la domanda corretta per capirlo, lo apprezzerei.

Indipendentemente da ciò, questo problema si è verificato a intermittenza e non siamo mai abbastanza sicuri di cosa lo causi esattamente né di cosa abbiamo fatto per risolverlo in passato. Quello di cui sono sicuro è che ho passato molte ore a non fare altro che fissare inutilmente questo risultato criptico.

Ogni volta, la storia è qualcosa del tipo:

  • Tutto bene, compilazione, tutto funziona? Fantastico? (più o meno, è un vecchio progetto ...).
  • Effettua alcune modifiche; che funziona come previsto.
  • Fai qualche cambiamento; che si traduce in questo errore. (a volte è coinvolta qualche operazione git, e questo è un grande sospetto per me.)
  • Riprova a compilare. (Diciamo che funziona 9 su 10)
  • Ma poi arriva la decima volta e senza fortuna.
  • Fare ??? e inizia a funzionare (per lo più ripristina un hard backup della cartella del progetto della macchina, fatto quotidianamente)

Questo è frustrante e controproducente. Non siamo mai abbastanza sicuri di cosa abbiamo fatto che lo ha causato o cosa lo ha risolto.

Qualsiasi aiuto sarebbe molto apprezzato. Ecco uno screenshot dell'errore in Visual Studio 2019.

Risposte

PedroRodrigues Aug 25 2020 at 15:52

L'ho capito.

Quindi la vera domanda qui è: il Web.configfile dovrebbe essere aggiunto al controllo della versione?

Naturalmente. Il progetto non verrà compilato senza il Web.configfile corretto .

No

Il Web.configfile è per la configurazione dell'ambiente (sai, le variabili di ambiente sono così obsolete). Non dovresti mai inserire cose come le credenziali del database nel controllo del codice sorgente.

ASP

Quindi la risposta, in ASP, è sì e no. Per i motivi sopra. Se questo non è pazzo, sono pazzo.

Si scopre che il Web.configfile era stato manomesso. Avevo;

<system.web>
    <compilation explicit="false" strict="false" targetFramework="4.5.2" debug="true">
    (...)
</system.web>

Dove avrebbe dovuto essere:

<system.web>
    <compilation explicit="false" strict="false" targetFramework="4.7.2" debug="true">
    (...)
</system.web>

Riesci a individuare la differenza? Non è facile, infatti nemmeno Visual Studio è stato in grado di capire, o dirmi, cosa c'era che non andava. Ma quel piccolo fastidio 4.5.2avrebbe dovuto essere 4.7.2. Non è che l'abbiamo cambiato. Era stato così per un po 'prima di questo non senso.

Che quadro criptico.