Completamento automatico non funzionante in Visual Studio


151

Ho un piccolo problema con gli script. Quando scrivo script C # per Unity con Visual Studio sembra che io stia lavorando nel blocco note, non ci sono completamenti automatici (giusto?) E devo scriverlo molto lentamente.

Per favore, guarda il video. All'inizio è la situazione normale (dal tutorial), la seconda parte mostra il mio problema.

Video con problema

Ad esempio, la transformclasse non mostra suggerimenti o il completamento automatico.

Immagine con problema:

inserisci qui la descrizione dell'immagine

Versione Unity: 5.5.2f1
Visual Studio 2015
Visual Studio Tools per Unity è installato


1
translate.google.com :) Realizzazione di un video e caricamento su YouTube per la descrizione dell'errore +1 xd
Timon Post

Ok, ll try... I have a Little problem with scripts. When Isto scrivendo script C # per Unity con Visual Studio, sembra che io stia lavorando nel blocco note, non ci sono "suggerimenti" (giusto?) E devo scriverlo molto lentamente. Per favore, guarda il video. All'inizio è una situazione normale (dal tutorial), la seconda parte è il mio problema.
Corben Dalas,

1
Direi che stai chiedendo "completamento automatico", non suggerimenti.
Martijn Pieters

Quale versione di Visual Studio e quale versione di Unity?
Programmatore

Versione Unity: 5.5.2f1 / Visual studio 2015 / Visual Studio Tools per Unity installato
CorbenDalas

Risposte:


343

Non viene eseguito il completamento automatico perché lo script indica " File vari " anziché il nome del progetto. Dai un'occhiata all'immagine qui sotto che proviene dal video nella tua domanda:

inserisci qui la descrizione dell'immagine

Il messaggio " File vari " può essere visualizzato per diversi motivi:

1. Può succedere quando apri il tuo file Unity C # da un'altra cartella invece di aprirlo da Unity Editor.

2. Questo può accadere anche perché Unity si è arrestato in modo anomalo mentre Visual Studio è ancora aperto, quindi corrompendo alcuni file.

3. Può succedere perché Unity è stato chiuso e poi riaperto ma non è più connesso a Visual Studio. Quando Visual Studio viene aperto, si ottengono " File vari " e nessun completamento automatico.

4. Questo può accadere quando Visual Studio Tools per unity non è installato.

5 .Quando si crea uno script da Unity poi aprire rapidamente prima di finire l'unità di elaborazione o prima che il giro icona di animazione finitura roba animazione.


Il più delle volte, il riavvio di Unity e Visual Studio dovrebbe risolvere questo problema.

Non so quale sia la causa del problema, ma tratterò la soluzione più probabile per risolvere il problema.

Correggi la parte 1 :

1. Scaricare e installare gli strumenti di Visual Studio per l'unità da questo collegamento. Fallo mentre Unity e Visual Studio sono entrambi chiusi.

2. Da Unity Editor, vai a Modifica -> Preferenze ... -> Strumenti esterni . Nel menu a discesa Editor di script esterno , modificalo in Visual Studio 2015 .

inserisci qui la descrizione dell'immagine


Correggi la parte 2 :

Se i file C # appena creati vengono visualizzati come Varie, seguire le istruzioni seguenti:

1. Da Visual Studio, vai su Strumenti -> Opzioni ... -> Strumenti per Unity -> Varie . In Mostra icona connettività , impostalo per trueriavviare Visual Studio.

inserisci qui la descrizione dell'immagine

2. Al riavvio, l'icona di connessione dovrebbe ora essere disponibile in Visual Studio. Fare clic su di esso, quindi selezionare l'istanza Unity a cui connettersi. L'icona 'x' rossa ora dovrebbe trasformarsi in un'icona marrone con segno di spunta. Ora, quando si crea un nuovo file C # in Unity, dovrebbe aprirsi senza dire Varie .

inserisci qui la descrizione dell'immagine


Correggi la parte 3 :

Ancora non riparato?

Reimportare il progetto quindi aprire C # Project.

1. Chiudi Visual Studio.

2. Da Unity, reimportare il progetto andando a Risorse -> Reimport All .

inserisci qui la descrizione dell'immagine

3 .Ora, aprire il progetto in Visual Studio andando a Assets -> Apri C # progetto . Ciò ricaricherà il progetto e risolverà i possibili problemi del file di soluzione.

inserisci qui la descrizione dell'immagine


Correggi la parte 4 :

Ancora non riparato?

Correggi ogni file C # singolarmente.

1 .Fare clic su Mostra tutti i file icona.

inserisci qui la descrizione dell'immagine

2. Selezionare lo script che non si completa automaticamente, quindi fare clic con il tasto destro e selezionare Includi nel progetto .

inserisci qui la descrizione dell'immagine


Correggi la parte 5 :

Non ancora risolto?

Il merito va a chrisvarnz per questa particolare soluzione che sembra aver funzionato per più persone.

1 Chiudi Visual Studio

2 Vai alla directory del progetto ed elimina tutti i file di Visual Studio generati.

Queste sono le estensioni dei file da eliminare:

  • csproj
  • .utente
  • .sln

Esempio:

Diciamo che il nome del tuo progetto si chiama "Target Shoot" , ecco come dovrebbero apparire i file da eliminare:

  • Target Shoot.csproj
  • Target Shoot.Editor.csproj
  • Target Shoot.Editor.csproj.user
  • Target Shoot.Player.csproj
  • Target Shoot.Player.csproj.user
  • Target Shoot.sln

Non cancellare nient'altro.

3. Fare di nuovo doppio clic sullo script da Unity che dovrebbe generare un nuovo file di Visual Studio, quindi aprire Visual Studio. Questo potrebbe risolvere il tuo problema.


Correggi la parte 6 :

Se non funziona, controlla se stai riscontrando questo errore:

L'attività "GetReferenceNearestTargetFrameworkTask" non è stata trovata

1. Installa Nuget PackageManager da qui .

2. Riavvia Visual Visual.

Vedi questa risposta per maggiori informazioni.


4
Grazie per il puntatore di file vari! Chiudendo VS, eliminando i progetti VS e sln e facendo doppio clic su uno script in Unity (quindi rigenerando i file di progetto e riaprendo VS), l'ho risolto per me. Consiglierei di provarlo prima del pulsante "reimporta tutto" dato che è pranzo / notte per progetti non banali.
chrisvarnz,

2
Questo è un buon consiglio. Spero che chiunque legga questo messaggio possa vedere questo commento
Programmatore

Ciò è spesso causato dalla creazione di nuovi script o dal loro spostamento in cartelle diverse in Unity. Ogni volta che il riavvio Unità e VS non lo risolve, ho simoly anche cancellare le *.csproje *.slnfile e iniziare l'Unità di. Questo di solito funziona
derHugo

1
La soluzione @chrisvarnz ha funzionato per me dopo aver provato tutti questi altri suggerimenti.
gollumullog,

1
@gollumullog Buono. Dal momento che ha funzionato per più persone, ho aggiornato la mia risposta per includerla anche.
Programmatore,

39

Prova questo,

In Unity Editor Vai al menu, fai clic su Modifica -> Preferenze -> Strumenti esterni -> Editor di script esterno. Impostalo su Visual Studio (la versione installata di VS).

Ora nella barra dei menu vai su Modifica -> Impostazioni progetto -> Impostazioni lettore -> Altre impostazioni -> Sotto Configurazione -> Verifica livello di compatibilità API -> Passa alla versione .Net installata. Nel mio caso l'ho impostato su .Net 4.x

Ora se Visual Studio è già in esecuzione, vai su Visual Studio, ti chiederà di ricaricare il progetto. Ricarica il progetto. Controlla se funziona, se non chiudi Visual Studio. Ora apri il file cs da Unity Editor e ora dovrebbe funzionare.


Lo stesso per me, grazie! Ho provato di tutto ma solo questo ha risolto il problema.
Shadowmak,

1
questa è la vera risposta. Questo deve essere al top!
Mark Purnell,

Questo ha funzionato anche per me. Inoltre, un'altra cosa che ho fatto in Unity 2020.2.0a13 è stata deselezionata e ricontrollare il segno in Modifica / Impostazioni progetto / Lettore / Altre impostazioni: API grafica automatica. Dopo il riavvio di Visual Studio, il completamento automatico è tornato: D
Ant100 il

14

Ho trovato un altro modo per risolvere questo problema in un modo più conveniente:

  1. Seleziona il file danneggiato in Esplora soluzioni.
  2. Apri le sue proprietà.
  3. Cambia il campo "Build Action" da "Compila" a "Nessuno".
  4. Quindi riportalo su "Compila".

Questo in qualche modo ucciderà la sincronizzazione tra Unity e Visual Studio.

La prossima volta che Visual Studio ricaricherà il progetto, verrà richiesto un avviso. Basta fare clic su "Elimina".


7

Scarica e ricarica il progetto, in Visual Studio:

  • fare clic con il tasto destro del mouse sul progetto in Esplora soluzioni
  • seleziona Scarica progetto
  • seleziona Ricarica progetto

Fisso!

Ho trovato questa soluzione per funzionare al meglio (più semplice), avendo riscontrato più volte il problema.

Fonte: https://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/


Grazie per l'aiuto! Funzionava, ma sento che siamo tornati negli anni '90 e dobbiamo riavviare Windows, solo che questa volta è VS 2017.
user3053247

4
  1. Seleziona progetto in Visual Studio
  2. Fai clic sul pulsante "Aggiorna"

inserisci qui la descrizione dell'immagine


1
Whoa! Nient'altro mi ha aiutato; Reinstallare VS, anche reinstallando Unity in modo che reinstallasse VS, eliminando i file .sln e .cjsproj in modo che fossero rigenerati. nulla ha aiutato .. ma finalmente un semplice clic in Esplora soluzioni per mostrare le cartelle sembrava farlo: o
antont

3

Se hai fatto tutto quanto sopra e ancora non funziona, prova questo: Nota: dovresti aver aggiornato VS. Schermata di Visual Studio

Vai a Unità> modifica> preferenza> Strumenti esterni> editor di script esterno. Screenshot di Unity In qualche modo per me non avevo selezionato "Visual Studio" per l'editor di script esterno e non funzionava. Non appena l'ho selezionato e ho fatto doppio clic sul file c # dall'unità, ha iniziato a funzionare.

Spero aiuti anche te.


2

Oggi ho riscontrato gli stessi problemi utilizzando Visual Studio 2017 15.4.5 con Unity 2017.

Sono stato in grado di risolvere il problema facendo clic con il pulsante destro del mouse sul progetto in Visual Studio e cambiando il framework di destinazione da 3.5 a 4.5.

Spero che questo aiuti chiunque altro in uno scenario simile.


2

Due opzioni alternative:

Correzione 1

@singleton mi ha indicato in questa direzione. Invece di modificare la destinazione in Visual Studio, è necessario modificarla in Unity poiché il progetto viene generato automaticamente.

Innanzitutto elimina i file di Visual Studio generati automaticamente: .csproj .user .sln

Quindi da Unity vai su PlayerSettings e in "Altre impostazioni" cambia la "Versione di runtime di script" da Stable 3.5 a Experimental 4.6.

Tuttavia, ciò non ha risolto il problema per me.

Correzione 2

Ho notato che tutti i riferimenti al codice relativo a Unity sono stati contrassegnati da un avviso giallo. Controlla i log degli errori e vedi se è così. In particolare, vedi se ricevi il seguente errore: getreferenceNearestTargetframeworkTask

In tal caso, provare: avviare nuovamente Visual Studio Installer.

In Build Tools 2017, fai clic su Modifica,

Assicurarsi che "Target Nuget e attività di costruzione" siano spuntati. Questo dovrebbe essere spuntato se si fa clic sullo sviluppo della piattaforma Windows universale.


1

ho trovato la mia soluzione creando il file .cs da Visual Studio stesso invece dell'editor di unità

  • fare clic con il tasto destro sulla cartella del progetto in Esplora soluzioni
  • aggiungi> nuovo elemento
  • digita "unità" nel campo di ricerca in alto a destra
  • seleziona "CSharp MonoBehaviour"
  • dai un nome al tuo script in basso e fai clic su Aggiungi

1
Che cosa succede se hai già creato gli script ma poi all'improvviso, questo problema si pone, eliminerai tutti gli script e li creerai di nuovo da Visual Studio?
Programmatore

@Programmer bene userei la tua soluzione di Parte 4 per correggere lo script già in errore ma uso sempre Visual Studio per creare un nuovo script perché nessuna delle tue soluzioni ha impedito che il nuovo script ottenga errori a meno che non abbia creato il file da Visual Studio
Fredy Rommy Sianturi,

1

Nel mio caso, la corretta versione .net non è stata installata sul mio PC. Installo il .net 3.5 sul mio pc e questo ha funzionato per me.


La tua risposta mi ha dato l'idea di cambiare il livello di compatibilità API nelle impostazioni di Unity Player da .Net 2.0 a .Net 4.x. E quindi ricaricare il progetto in Visual Studio. Ora tutto funziona bene.
Juned Khan Momin,

1

Il problema che ho dovuto affrontare era che il progetto C # era destinato a un altro .NET Framework (4.7.2), mentre il progetto Unity aveva un obiettivo diverso (.NET 3.5).

Ho risolto questo problema cambiando l'obiettivo in Unity as-

File -> Impostazioni build -> Impostazioni lettore -> Altre impostazioni -> Livello di compatibilità API: impostalo sulla versione .NET che hai già installato (controlla qui la tua versione .NET ). Nel mio caso, era 4.x

Successivamente, Visual Studio ha funzionato perfettamente e anche la correzione automatica è stata corretta.


Questo ha funzionato per me. Ho modificato il livello di compatibilità API in .Net 4.x, quindi Visual Studio ha chiesto di ricaricare il progetto. Ho ricaricato il progetto. Quindi ho chiuso Visual Studio, file cs aperto da Unity Editor e ora tutto funziona bene.
Juned Khan Momin,

1

Prova a premere Ctrl + Alt + Space(che alterna tra le modalità di completamento suggerimento e standard)


0

Per Windows o macOS:

Scarica / installa l' IDE di Visual Studio (con Unity Tools)

Durante l'installazione, assicurarsi di includere l'installazione di

Sviluppo di giochi con Unity

inserisci qui la descrizione dell'immagine

Quindi utilizzando Unity (puoi fare doppio clic su uno dei tuoi file C #), aprire un nuovo progetto C # e l'IDE di Visual Studio dovrebbe aprirsi con la nuova struttura del progetto.

inserisci qui la descrizione dell'immagine

Da lì, dovresti essere in grado di vedere quello che stai cercando.

Per esempio:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Per Linux (suggerimento):

Prova Monodevelop : informazioni aggiuntive , fornisce suggerimenti / completamento del codice.


0

Ho risolto l'installazione della stessa versione di .NET su WIN configurata nel mio progetto Unity. (Impostazioni giocatore)


0

Anche il mio completamento automatico non funzionava perché Visual Studio Tools per Unity non era installato. Quindi, dopo averlo installato, elimina i file di Visual Studio generati automaticamente. Altri hanno detto che si apre di nuovo il file e il problema è risolto ma non lo è.

Il trucco è: invece di fare normalmente doppio clic sul file, è necessario aprire il file C # da Unity facendo clic con il tasto destro e poi "Apri progetto C #".


0

Nessuna delle soluzioni sopra ha funzionato per me. Tuttavia, ho aperto il file ProjectName.CSPROJ e aggiunto manualmente il nuovo file e ha funzionato come un fascino


0
  • Vai a Opzioni dal menu Strumenti, quindi seleziona Documenti nel nodo Ambiente. (Se Documenti non appare nell'elenco, selezionare Mostra tutte le impostazioni nella finestra di dialogo Opzioni.)
  • Metti un segno di spunta su "File vari in Esplora soluzioni" e fai clic su OK. (Questa opzione visualizza il nodo "File vari" in Esplora soluzioni. I file vari sono file che non sono associati a un progetto o a una soluzione ma possono apparire in Esplora soluzioni per comodità se si seleziona questa opzione.)
  • Individua il tuo file in Esplora soluzioni in "File vari". Quindi trascina e rilascia il tuo file dove dovrebbe appartenere e voilà! Questo copierà il file nel punto in cui lo rilasci. È ora possibile eliminare in modo sicuro il file precedente nella cartella File vari se si desidera farlo

Crediti: https://stackoverflow.com/a/47662523/10471480


Nel caso in cui la cartella Script non sia visibile:

  • Fai clic su "Mostra tutti i file" in Esplora soluzioni
  • Individua la cartella degli script.
  • Fare clic con il tasto destro su Script e selezionare "Includi nel progetto"

0

Quello che mi ha funzionato è che ho copiato tutto il codice all'interno della classe spezzata e rimosso quel file. Quindi, ho aperto un file vuoto e incollato.

Risultato : bellissimi momenti salienti della sintassi sono tornati!


0

Tenere presente che se si utilizza lo strumento ReSharper, questo sostituirà IntelliSense e mostrerà che è proprio. Per cambiarlo, su VS, vai su Estensioni -> ReSharper -> Opzioni -> IntelliSense -> Generale quindi scegli Visual Studio e non ReSharper.


0

Prima di riavviare e / o reinstallare VS, provare innanzitutto ad aprire qualsiasi altro progetto per vedere se Intellisence funziona, in caso affermativo, quindi il problema risiede probabilmente nel progetto corrente. In primo luogo, la vittima più probabile sarebbero i pacchetti NUGET con aggiornamenti in sospeso. Per risolvere questo problema,

  1. Fare clic con il tasto destro su riferimenti
  2. Procedere alla gestione dei pacchetti NUGET in Pacchetti NUGET
  3. procedere agli aggiornamenti Installa aggiornamenti e ricontrollare Intellisence

0

Ho provato tutti questi, ma alla fine ho scoperto che dovevo fare clic con il pulsante destro del mouse sulla soluzione in Esplora soluzioni, aggiungere elementi esistenti e trovare il file di assieme C # in Esplora risorse di Windows. Sembra che ci siano molti problemi diversi che ti danno questo errore, questa è probabilmente la soluzione più semplice. Se fai doppio clic sulla tua sceneggiatura dall'unità, non sembra trascinare il gruppo lungo.


0

uno dei metodi di cui sopra ha funzionato per me e ho appena trovato una soluzione a questo problema,
1. Innanzitutto, vai alla directory del progetto ed elimina il .slnfile
2. In secondo luogo, vai su unità e fai doppio clic sul tuo script. Quindi Visual Studio sarà aperto con un errore, inserisci qui la descrizione dell'immagine

  1. Quindi fare clic su OK e chiudere l'editor di Visual Studio.
  2. Infine, spegni Windows Defender e poi vai alla directory del tuo progetto e ci sarà il .csprojfile. Basta fare doppio clic e aprirlo dall'editor di Visual Studio e aprire la cartella degli script all'interno della cartella delle risorse e aprire gli script e il completamento automatico funzionerà perfettamente.

0

Aggiornamento 2020 con Visual Studio Community 2019 e Unity 2019.3:

1) Apri Visual Studio Installer come amministratore, seleziona per modificare l'installazione corrente e aggiungi "Sviluppo del gioco per Unity"

2) Se ora aggiungi un nuovo script c # in Unity e lo apri (automaticamente) con Visual Studio, non viene descritto come "Varie" nella parte superiore della finestra ma con "Assembly-CSharp" e il completamento automatico funziona.


0

Un'altra possibile soluzione:

  1. Nella finestra del progetto, fare clic sulla cartella Risorse
  2. Fare clic con il tasto destro e creare -> Script C #
  3. Fare doppio clic su di esso e attendere.

Per qualche ragione, questo lavoro.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.