2010-09-08 8 views
23

Sto sviluppando una libreria di classi per un bel po 'e all'improvviso, a volte la scorsa settimana, ho aperto il mio progetto e tutte le mie referenze hanno punti esclamativi gialli su di loro ora (System.dll, System.Drawing.dll, eccetera..). Ho provato a rimuovere i riferimenti e ad aggiungerli nuovamente per correggere eventuali percorsi di riferimento non funzionanti, ma continuano a mostrare punti esclamativi gialli su di essi.Perché tutti i miei riferimenti hanno punti esclamativi gialli su di essi nella mia libreria di classi .NET?

Nulla era cambiato dall'ultima volta che avevo aperto il progetto. L'unica cosa che era diversa dall'ultima volta che avevo aperto il progetto era che questa volta l'ho aperto direttamente da .NET in un altro progetto. Ad esempio, stavo lavorando su un progetto Web .NET 3.5, quindi ho fatto clic su File -> Apri file recenti -> La mia altra soluzione. Ciò ha chiuso la mia attuale soluzione web 3.5 corrente e ho aperto la soluzione di libreria di classi 2.0 e il problema è apparso per la prima volta. Non sono sicuro di come (o perché) ciò potrebbe causare un problema, ma mi sto appoggiando al fatto che Visual Studio sia stato confuso o qualcosa del genere e ora i miei assembly non sono validi in questo progetto di libreria di classi 2.0. (?)

Che cosa potrebbe causare ciò e come posso risolverlo? Ho guardato il Web, ma vedo solo che le persone hanno suggerito di rimuovere i riferimenti e riaggiungerli; che ho fatto, senza risultato.

Sto pensando di iniziare un nuovo progetto e copiare tutti i miei file sorgente uno per uno, ma vorrei davvero evitare tutto questo se possibile.

Grazie in anticipo!

+4

Un progetto utilizza .Net 2.0 mentre un altro progetto nella stessa soluzione utilizza .Net 3.5? E un progetto fa riferimento all'altro? – Amy

+0

Ricostruiscilo, documenta i messaggi di errore che ricevi. –

+0

grazie amy, stavo aggiungendo diverse versioni del progetto. –

risposta

18

Utilizzando Esplora soluzioni, fare clic con il pulsante destro del mouse e selezionare Scarica progetto, quindi selezionare Modifica (nome del file csproj) per poter modificare il file .csproj direttamente in VS.

Sotto uno dei nodi <ItemGroup> si trovano i sottonodi contrassegnati Reference. Assicurarsi che il valore del nodo HintPath punti su un percorso valido. Controlla anche i nodi SpecificVersion e Private per i valori validi.

Sperare di valutare questi valori ti aiuterà a risolvere il tuo problema.

+1

Grazie per il tuo suggerimento. Ho fatto quello che hai detto e tutto sembra corretto nel . Ho semplicemente cambiato tutti i miei riferimenti relativi (ad esempio '.. \ .. \ .. \') ai riferimenti assoluti (ad esempio 'c: \') e i punti esclamativi sono andati via magicamente. :) Grazie ancora! – Luc

43

Solo per aggiungere a questo. Recentemente ho riscontrato un problema in cui aggiungevo riferimenti che avevano impostato TargetFramework su .NET 4.0 in un progetto di Visual Studio 2008. Tutto quello che ottieni è un punto esclamativo giallo e una spiegazione.

Una volta capito che ho scelto i binari di rilascio errati, mi sembrava ovvio!

+0

Grazie, funziona davvero. – testCoder

+0

Ha, era esattamente il problema che stavo avendo - Grazie. – pfeds

+0

Idem qui ... grazie. –

0

Se i file .dll sono presenti nel controllo del codice sorgente, è sufficiente fare clic con il pulsante destro del mouse sulla cartella Dipendenze e pacchetti dalla soluzione (che si trova in Esplora controllo di origine) e ottenere la versione più recente.

Troverete i file .dll sul vostro sistema.

1

Ho riscontrato lo stesso problema con punti esclamativi gialli su un bounch di file sourcecode di una soluzione che è stata archiviata/gestita dal TFS. Non c'era regolarità in merito a quali file avessero effettivamente un punto esclamativo giallo e quali no. Cercando la causa di questo problema, ho potuto vedere che quei file con punti esclamativi gialli in realtà non sono nemmeno stati recuperati dal TFS sul mio disco rigido. Ho controllato HintPath ecc. Nei file .csproj e tutto sembrava a posto e anche nessun altro suggerimento da questo thread potrebbe aiutarmi a risolvere il problema.

COSA FINALMENTE MI HA AIUTATO a fare quanto segue: In solution explorer, fare clic con il tasto destro del mouse su Progetto -> Ottieni versione specifica ... -> ('Tipo versione: Ultima versione già selezionata') -> + attiva casella di controllo ' Sovrascrivi tutti i file anche se la versione locale corrisponde alla versione specificata '-> fai clic sul pulsante' Ottieni '

Dopo averlo fatto, tutti i file sourcecode possono essere recuperati con successo dal TFS e i punti esclamativi gialli sono scomparsi! Spero che questo aiuti qualcuno che sta avendo lo stesso problema!

0

Ho anche ricevuto questi errori. Sto usando le librerie Nuget nel mio progetto. Dopo aver preso un aggiornamento del pacchetto Microsoft.Bcl, tutti gli errori di riferimento sono stati risolti.

0

Nel mio caso, la soluzione sopra menzionata non ha funzionato. Non sono sicuro, come la mia piattaforma è stata cambiata in AnyCPU. Stavo usando sqlite nel progetto. Poi ho appena cambiato la piattaforma in x86/arm per l'emulatore/dispositivo. Ha funzionato di nuovo come un fascino. Spero, aiuti qualcuno.

5

il mio problema era la differenza nelle versioni di framework .NET di destinazione impostate nei progetti. il primo era impostato su .NET 4.0 e il secondo era .NET 4.5 cambiando risolto il mio problema

2

Cambiare il framework DotNet di destinazione per essere lo stesso tra i due progetti e tutto funzionerà bene. (Soprattutto se si "aggiorna")

+0

come ha detto @reza_baiat (mi mancava quello) – pashute

4

Ho avuto lo stesso problema con un progetto aperto recentemente in Visual Studio 2015.

L'errore è venuto fuori quando ho traslocato un paio di volte la posizione fisica dei repository di pacchetti di soluzioni predefinite e deliberatamente cambiato il valore del repositoryPath nel NuGet.Config

Nel mio caso, avevo bisogno di togliere un elemento il cui percorso puntato dall'attributo condition non è valido all'interno della sezione Target del file csproj.

<Error Condition="!Exists('..\..\..\..\..\Packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" 
     Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\Packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" /> 

Inoltre, questo errore viene riprodotto quando la solita cartella del pacchetto viene rimossa o spostata altrove. Si dovrebbe quindi aggiornare questo valore insieme agli ItemGroups.

+0

Ha funzionato per me – rorfun

11

controllare il meteo quadro del progetto NET è uguale o maggiore di riferimento NET Framework

+1

Aveva lo stesso problema qui; Il progetto .NET 4.5 che fa riferimento a un progetto .NET 4.5.1 non verrà compilato fino a quando non l'ho fatto. Grazie! – rdev5

+0

Un sintomo è che i tipi vengono riconosciuti da IntelliSence e che è possibile scrivere codice in Visual Studio utilizzando i tipi nella libreria di riferimento, tuttavia il codice non verrà compilato e verrà visualizzato un punto esclamativo giallo per tale assembly di riferimento. Sfortunatamente non esiste un suggerimento per dirci cosa c'è che non va. –

0

problema: Questo è quello che è successo a me, stavo mappando mio repository TFS a una cartella in C: \ Users \ myUserNameFolder \ Il "myUserNameFolder" ha permessi speciali per il fatto che è una cartella di sistema, a causa della quale le dll referenziate nella soluzione stavano ricevendo il triangolo giallo e ogni volta che provavo a rinominare tutte le dll che stavano ancora ottenendo stesso segno del triangolo giallo. Soluzione: Ho rimappato il mio repository TFS in una cartella normale su C: \ e questo ha fatto il trucco. Spero che questo aiuti qualcuno ..

P.S. Questo è successo in VS 2015.

1

Ho avuto lo stesso problema, dopo aver copiato le cartelle di progetto da un altro progetto come punto di partenza per una nuova soluzione.

Tutti i progetti facevano riferimento a questo punto esclamativo giallo, anche i riferimenti agli assiemi quadro.

Ciò che alla fine ha aiutato è stato quello di garantire la , che la cartella ".nuget" (Compreso Nuget.Config, NuGet.exe, NuGet.targets) era nella mia cartella della soluzione. Quindi ho fatto "Restore Nuget Packages" nel menu contestuale della soluzione. Ora tutti i punti esclamativi sono andati!

+0

grazie, anche questo era il mio problema. – TheNoob

0

Nel mio caso risulta che il dll aveva una versione diversa dal pacchetto nuget. Anche se 1.1.14 è stato scaricato e la cartella è stata chiamata 1.1.14, dopo aver controllato le proprietà della DLL (sotto la scheda dettagli), ho notato che era la versione 1.1.13.

Pertanto, il mio csproj ha dovuto fare riferimento a una cartella 1.1.14, ma una dll 1.1.13. Ho cambiato il file csproj per indicarlo.

Problemi correlati