2013-02-26 14 views
13

Abbiamo sviluppato una grande soluzione contenente ~ 35 progetti con VS 2010, ora stiamo pensando di migrare a VS 2012 Ultimo. Ho convertito il file della soluzione in VS 2012 e, in generale, tutto funziona correttamente.Visual Studio 2012: Progetto non è possibile fare riferimento

Ma ogni volta che apro la soluzione, ho un po 'avvertimenti su un certo progetto Un nella soluzione: "Il progetto X non è possibile fare riferimento" "Il progetto Y non può essere fatto riferimento" ... dove A ha riferimenti di progetto a X e Y. Quando costruisco la soluzione, ottengo errori che non è stato possibile trovare i metadati di ogni rispettiva DLL.

Quando guardo i riferimenti nella soluzione esploratore, sono contrassegnati con un avviso-simbolo di colore giallo. Non appena faccio semplicemente clic sul riferimento, l'avviso scompare e l'icona appare normale. Quindi posso costruire senza errori!

Il problema si verifica ogni volta che apro la soluzione, i progetti interessati sono sempre gli stessi.

Qualcun altro ha riscontrato questo strano comportamento? eliminazione e aggiungendo i riferimenti del progetto ancora una volta non ha aiutato ...

Grazie in anticipo.

EDIT: Ho controllato il file csproj del progetto di riferimento e mi chiedo che tutti i GUID di riferimento del progetto con il problema precedente siano scritti in minuscolo, altri progetti siano in maiuscolo.

<ProjectReference Include="..\Presentation.Net\Presentation.Net.csproj"> 
    <Project>{04004c6b-76c8-4f2d-9fcf-5a866bb80fd4}</Project> 
    <Name>CMS.Presentation.Net</Name> 
</ProjectReference> 

Mentre all'interno della soluzione i GUID vengono convertiti tutti in maiuscolo:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Presentation.Net", "Presentation.Net\Presentation.Net.csproj", "{04004C6B-76C8-4F2D-9FCF-5A866BB80FD4}" 

Tutte le idee?

+0

I riferimenti fanno parte della stessa soluzione? Potrebbe avere a che fare con una soluzione pulita, con quei progetti che non sono disponibili fino al completamento di una costruzione? –

+0

I progetti di riferimento sono nella stessa soluzione del progetto di riferimento. Comunque non ho mai avuto questi problemi con VS10 e la struttura della soluzione non è cambiata da allora. La pulizia della soluzione non aiuta. – mbue

+0

Si prega di cercare di evitare di chiamare VS2012 solo VS12. Questo è l'opposto del problema che aveva persone che lo chiamavano (mentre era in Beta) VS2011, perché il suo numero di versione * è * 11. Quindi, se/quando c'è un V.Next di Visual Studio, è probabile (mentre in Beta) per essere chiamato Visual Studio 12. –

risposta

3

Questo mi ha indirizzato nella giusta direzione. Visual Studio 2012 Randomly reporting: "The referenced component X could not be found"

Almeno gli avvisi vanno via. Controllare se gli errori dei metadati si verificheranno di nuovo.

+0

Ho avuto lo stesso problema, e apparentemente non è stato risolto nemmeno in VS2013, nonostante ciò che dice il bug di Connect. Viene visualizzato nella riga di comando msbuild o nell'IDE 2013 come errori di metadati mancanti, causati dalla mancata creazione dei progetti dipendenti. Inoltre, non siamo riusciti a capire perché alcune persone hanno le guide maiuscole e altre seguono le istruzioni minuscole quando aggiungono i riferimenti nell'IDE. L'aggiunta di componenti aggiuntivi non ha aiutato. Quindi: il nostro attuale 'fix' è quello di uppercase project ref guid con uno script powershell a livello globale per i nostri csproj. Bello. – scobi

3

VS 2012 cessato il supporto per alcuni dei tipi di progetto più anziani. Non tutti i tipi di progetti VS 2010 sono supportati in VS 2012. Ad esempio, i tipi di progetto di installazione MSI sono stati sostituiti dai tipi di progetto InstallShield LE. Check the compatibility list here e verifica se uno dei tipi di progetti che non funzionano è un problema.

+1

Hi Jordan, il progetto di riferimento è un eseguibile di Windows, i progetti di riferimento sono librerie di classi. Non ho visto alcun problema all'interno dell'elenco di compatibilità. – mbue

0

Provare a pulire il progetto/soluzione e quindi costruirlo.

0

Quando mi sono imbattuto in questo problema, è stato a causa di diverse versioni di .NET tra i progetti. È necessario assicurarsi che il progetto che si sta tentando di fare riferimento abbia una versione .NET compatibile con il progetto corrente.

Ad esempio se il progetto di destinazione è .NET 4.5.2 e il progetto di riferimento si trova in 4.6, è possibile ottenere questo errore poiché il progetto di riferimento utilizza componenti a cui il progetto corrente non può accedere.

Per risolvere il problema, è sufficiente accedere alle proprietà del progetto di destinazione e selezionare la versione compatibile corretta di .NET. Per tutti i miei progetti nella mia soluzione mantengo la stessa versione .NET per ciascuno di essi, specialmente se si riferiscono l'un l'altro.

Problemi correlati