2013-11-25 9 views
234

Desidero testare la classe principale di un plug-in facendo riferimento direttamente al progetto del plugin e creando un'istanza della classe del plugin. Quando creo un progetto App Console di prova e aggiungo un riferimento al progetto del plugin, viene visualizzata un'icona di avviso (triangolo giallo con punto esclamativo) accanto al riferimento nell'elenco Riferimenti.Perché compare un'icona di avviso quando aggiungo un riferimento a un progetto di plugin MEF?

Quando aggiungo invece un riferimento alla DLL, l'output di compilazione dell'assieme del plugin, non ricevo alcun avviso di questo tipo. Cosa potrebbe voler dire questo avvertimento?

+7

Nella maggior parte dei casi, i triangoli di avviso avranno suggerimenti o (in mancanza) una voce nella finestra degli errori. –

+2

Eventuali avvisi nella console durante il tentativo di compilare? – Jite

+197

Ho visto questo con i progetti che hanno come target diverse versioni .net framwork – mhand

risposta

0

È passato molto tempo da quando è stata posta questa domanda, ma se qualcuno è ancora interessato, di recente mi sono imbattuto in icone simili. Stavo compilando un progetto C# .net usando VS 2008. Ho trovato che VS non poteva individuare gli assembly per quei riferimenti. Quando ho fatto doppio clic su VS, ho aggiornato i riferimenti e rimosso le icone su alcune di quelle [EDIT: che ora potrebbe trovare]. Per i riferimenti rimanenti, ho dovuto compilare i rispettivi assembly.

559

Come menzionato nei commenti della domanda, diverse versioni di .NET Framework tra i progetti possono causare questo. Controlla le proprietà del nuovo progetto per garantire che non venga utilizzata una versione predefinita diversa.

+37

Dovrebbe essere la risposta accettata. –

+10

Quello che devo anche sapere è perché Visual Studio ha accettato di aggiungere tali riferimenti allora? –

+13

Sto usando VS 2015 e il problema è ancora lì. Ho perso mezz'ora fino a quando sono venuto qui. – Alisson

2

Aggiungendo i miei 2 centesimi alla risposta @ kad81,

Vai a Visual Studio -> BUILD -> Configuration Manager

Nella "Active Platform Solution" discesa in alto a destra (il mio è VS 2012), se si tratta di "Piattaforme miste", sostituirlo con la piattaforma appropriata in base agli assiemi di terze parti di riferimento.

Quindi, in ciascun progetto nell'elenco, assicurarsi di selezionare la stessa piattaforma per tutto il progetto. (se x86 non esiste, selezionare "", quindi selezionare "x86".)

Ricreare prima i progetti di libreria e quindi fare riferimento ai progetti. Spero che questo aiuti.

11

reinstallare tutti i pacchetti in tutti i progetti di soluzione corrente:

Update-Package -Reinstall 
+2

Anche se questo suggerimento non ha risolto direttamente il mio problema, mi ha indirizzato nella giusta direzione per il mio scenario. Per quelli che possono aiutare, in realtà ho dovuto cambiare il mio pacchetto sorgente NuGet in v3 per Update-Package per trovare la versione giusta da scaricare: https://docs.nuget.org/consume/package-manager-dialog#package- fonti –

5

Controllare NETFramework della DLL di cui & il progetto in cui si sta aggiungendo la DLL. Es: DLL ==> supportedRuntime version = "v4.0" Progetto ==> supportedRuntime version = "V3.0"

Otterrete un'icona di avviso. Soluzione: rendi coerente la versione di dll.

65

Si è verificato lo stesso problema con un'app Web ASP.Net e due progetti di classi di libreria che dovevano essere referenziati all'interno dell'app Web. Non ho fornito informazioni sul motivo per cui la compilazione non è riuscita e i riferimenti non erano validi.

soluzione era quella di garantire che tutti i progetti avevano lo stesso framework di destinazione:

In Visual Studio 2015- Right Click progetto> Proprietà> Applicazioni> Target Framework

Salva, e ricostruire soluzione. I riferimenti del progetto non dovrebbero più apparire come avvisi gialli e la soluzione verrà compilata.

La mia app Web era mirata .Net 4.5 mentre gli altri due progetti di classe biblioteca dipendenti mirati Net v4.5.2

41

Per entrambi (o tutti) i progetti che si desidera utilizzare insieme:

clic destro sul progetto> Proprietà> Applicazioni> Struttura .NET di destinazione

Assicurarsi che entrambi (o tutti) i progetti utilizzino la stessa versione di framework .NET.

+0

Perfetto, ha funzionato per me! Ho avuto un progetto MVC con .NET Framework 4.5.2. E le mie librerie di classi che fanno riferimento a questo erano .NET Framework 4.7. –

0

Ho avuto queste icone per un motivo diverso. Abbiamo un'unica soluzione per tutti i nostri progetti (quasi 100). Ho fatto una sottoselezione dei progetti che mi interessavano e ho fatto una nuova soluzione. Tuttavia i riferimenti in cui il progetto fa riferimento invece dei riferimenti alle dll compilate ....

Dopo alcune ricerche ho trovato this link on GitHub che spiega che questo è un nuovo comportamento in VS2015.

Nella pagina GitHub viene illustrata una soluzione alternativa per la conversione dei riferimenti di progetto in riferimenti binari.

9
  1. assicurarsi tutte le versioni sono uguali per ogni progetto Fare clic su ciascuna progetti e vedere la versione qui Progetto> Proprietà> Applicazioni> framework di destinazione .NET
  2. a. Vai a Strumenti> Nuget Package Manager> Package Manager Tipo Console Update-Package -Reinstall (se non funziona procedere alla 2.b)

    b. Rimuovi < Destinazione>Forse con più righe </Target> in genere nella parte inferiore di .csproj.

  3. Salvare, caricare e creare la soluzione.

+0

Grazie per questo, un bel messaggio di errore in Visual Studio sulle versioni .Net non andava fuori strada qui! – colmde

0

Per risolvere alcune cose che non funziona ha senso per rimuovere alcune librerie a volte, come non vorrei che il suono strano.

In ogni modo, credo che il problema è troppo ampia e potrebbe essere causato da diversi fattori , quindi voglio condividere la mia situazione/soluzione.

Avevo un progetto (proposto dal cliente) con Xamarin Forms e librerie Telerik. La cosa era in generale correlata ai componenti, che le librerie non sono incluse nella cartella package, né disponibili tramite Nuget (quelle a pagamento).

L'intero progetto Riferimenti erano "gialli", sembrava orribile e spaventoso.

La soluzione era solo per rimuovere quei Telerik riferimenti (compresi alcuni controlli in codice che stavano usando questo). Subito dopo tutti i riferimenti hanno magicamente ottenuto il loro comune colore grigio normale e gli errori (principalmente) sono scomparsi.

"Principalmente" - perché i messaggi di errore "tutto rosso intorno" su "l'elemento non è definito ovunque" a volte si verificano ancora. Questo è strano e porta disagi, ma riesco ancora a compilare ed eseguire il/i progetto/i: basta pulire la soluzione, riavviare Visual Studio, pregare un po ', pulire di nuovo, rimuovere le cartelle obj/bin, riavviare di nuovo e funziona bene.

L'elemento chiave è rimuovere i riferimenti alle librerie non disponibili, poiché i messaggi di errore dicono assolutamente un'altra cosa. (Ad esempio, qualcosa come "Xamarin.Build.Download.XamarinDownloadArchives non trovato o impossibile trovare qualcosa" ecc., Ma ciò potrebbe significare che non hai alcuni riferimenti disponibili.

Quindi rimuovere la cartella dei pacchetti, ricaricare/riaprire il progetto/soluzione, andare su "Gestisci pacchetti Nuget" e fare clic sul pulsante "Ripristina"

Problemi correlati