Il progetto di riferimento viene "perso" in fase di compilazione


102

Ho una soluzione C # con due progetti: un servizio (il progetto principale) e un logger. Il servizio utilizza le classi del logger. Ho aggiunto un riferimento al progetto logger all'interno del progetto di servizio. In fase di progettazione, il completamento automatico funziona bene: le classi del logger sono visibili, i riferimenti che uso sono colorati in modo appropriato.

Ricostruisco la soluzione e le cose vanno male. I riferimenti non vengono più riconosciuti: "Il nome" Logging "non esiste nel contesto corrente" e le classi non esistono più nel completamento automatico. La rimozione e il ricollegamento del riferimento mi riporta allo stato di base in cui gli identificatori sono visibili per il completamento automatico.

Ho riavviato, cancellato tutte le cache, assicurandomi che questa fosse l'unica istanza di VS 2010 in esecuzione sulla mia macchina.

C'è qualcosa di ovvio (ovviamente) che mi manca?

Risposte:


158

Controlla i tipi di build di ciascun progetto nelle proprietà del progetto: scommetto che l'uno o l'altro sarà impostato per costruire contro .NET XX - Client Profile.

Con versioni incoerenti, in particolare con un essere Client Profilee l'altro no, funziona in fase di progettazione ma non riesce in fase di compilazione. Un vero trucchetto.

C'è qualcosa di divertente in Visual Studio 2010 per me, che continua a impostare progetti in modo apparentemente casuale Client Profile, a volte quando creo un progetto e talvolta alcuni giorni dopo. Probabilmente qualche scorciatoia da tastiera che colpisco accidentalmente ...


1
Scommetto che hai ragione ... e mi vergogno se è così per non ricordare questa domanda simile che ho fatto il mese scorso! stackoverflow.com/questions/3991361/…
Bob Kaufman

6
@Bob Continua a sanguinare a me, e proprio come hai fatto tu la domanda precedente, ogni volta che succede, per almeno alcuni minuti sono completamente confuso dall'intera cosa finché non ricordo "Oooooh, aspetta, Cliente ** ** ing Profile "
joshcomley

4
Ho anche avuto questo problema con VS2012. Si è scoperto che non si trattava del problema del profilo client, ma che il progetto a cui si fa riferimento era in 4.5 e il nuovo progetto a cui si faceva riferimento era impostato su 4.0. L'ho portato a 4.5 e il problema è andato via. Stessa soluzione davvero, solo un'altra variazione.
Brad Mathews

Questo mi è successo di recente in VS 2013. Il progetto era il 4.5 di default, ma una delle librerie era costruita su 4.5.2. Se il progetto è 4.5.2 e una delle librerie è 4.5 o 4.5.1 funzionerà. Ma non il contrario.
ahwm

4

Assicurati che entrambi i progetti abbiano la stessa versione del framework di destinazione qui: fai clic con il tasto destro su progetto -> proprietà -> applicazione (scheda) -> framework di destinazione

Inoltre, assicurati che il progetto "logger" (che vuoi includere nel progetto principale) abbia il tipo di output "Libreria di classi" in: fai clic con il tasto destro su progetto -> proprietà -> applicazione (tab) -> tipo di output

Infine, ricostruisci la soluzione.

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.