2011-01-26 10 views
10

Contesto:Assemblea VS2010 di riferimento tra i progetti fallita

Ho 3 progetti in mie soluzioni (C#, .NET 4.0):

  • Abc.Business (progetto DLL)
  • Abc.Test (progetto di prova)
  • Abc.Ui (progetto WPF)

  • Abc.Bu siness è la mia logica di business. Contiene Enti, gestori, servizi, ecc

  • Abc.Test hanno un riferimento al progetto sul Abc.Business e sono i test di unità. Funzionano bene.
  • Abc.Ui hanno un riferimento al progetto sul Abc.Business

Abc.Ui è in grado di risolvere tutti i using Abc.Business; Il log di errore mostra:

Errore Il tipo o il nome dello spazio dei nomi 'Business' non esiste nello spazio dei nomi 'Abc' (ti manca un riferimento all'assembly?) c: \ Abc \ Abc.Ui \ ViewModels \ ClientViewModel.cs

Inoltre, quando digito manualmente using nella parte superiore del mio file, Intelli-sense mostra "Abc.Business.etc ..". Quindi il senso dell'Intellio cammina nel riferimento ma non è costruito.

Qualche idea?

+0

Hai pulito la soluzione e quindi hai provato a costruire? Di solito questo aiuta. – Bernard

+0

Cerca da vicino in Solution Explorer. è il ref lì del tutto, quale icona mostra? –

+0

@Bernard: sì molte volte .. –

risposta

15

Un grande ringraziamento a Grhm e Henk Holterman che mi ha indicato la soluzione Architettura. In realtà, non era il problema, ma mi fa trovare. Il problema era l'obiettivo quadro. Il progetto Ui era, come impostazione predefinita, destinato a un framework .NET 4.0 con un profilo "Client". Questo profilo non può fare riferimento a un profilo non client. Lo trovo nella finestra di output di debug non abbastanza utilizzata. (Io sono abituato a guardare nella lista di errore invece)

Ecco ciò che l'errore mostrato:

c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1360,9): avviso MSB3253: l'assembly di riferimento "C: \ Abc \ Abc.Business \ bin \ Debug \ Abc.Business.dll" non può essere risolto perché ha una dipendenza da "System.Web, Versione = 4.0. 0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "che non si trova nel framework attualmente selezionato" .NETFramework, Version = v4.0, Profile = Client ". Rimuovi i riferimenti agli assembly non presenti nel framework di destinazione o considera il retargeting del tuo progetto.

Cambio il profilo in normale (niente) e BOOM tutto funziona. Here's the MSDN page su di esso

Grazie ancora per il vostro tempo ragazzi.

+1

L'ho avuto di recente e la risposta è stata leggermente diversa. Lo stesso errore è venuto oggi e questo lo ha risolto per me. Grazie :) – dooburt

+1

grazie per quello. Ho trascorso 2 ore alla ricerca di una soluzione! Quasi sul punto di disperare – matcheek

+0

È un vero piacere aiutare! –

0

Hai aggiunto un riferimento al progetto Abc.Business al progetto Abc.Ui? Puoi farlo facendo clic con il tasto destro su Riferimenti in Abc.Ui, selezionando Aggiungi riferimento e andando alla scheda Progetti. e selezionando Abc.Business.

+0

Sì Ui ha un riferimento di progetto su Business. Grazie per il suggerimento. –

3

Mi aspetterei problemi se c'è un'incompatibilità tra i due.

A pochi suggerimenti/idee:

  • rimuovere il riferimento e aggiungerlo di nuovo, come un riferimento a un progetto
  • Rigenera soluzione e verificare i messaggi di errore
  • piattaforma di controllo (versione). Forse l'interfaccia utente è piattaforma client e il livello Biz utilizza l'intera piattaforma.
4

Ho riscontrato problemi di questo tipo in caso di incongruenze nel Configuration Manager. (Accessibile tramite il menu Costruisci).

Abbiamo avuto alcuni progetti di costruzione di una variante x86, alcuni di costruzione di una variante x64 e il gestore di configurazione aveva "Piattaforme di soluzioni" per "Qualsiasi CPU" e "Processori misti".

Credo che abbiamo creato il nostro "Business" come libreria x86 e la nostra "UI" come x64 (o viceversa), il che significava che non riusciva a trovare l'assembly (per l'architettura giusta) e ha dato l'errore stai vedendo, ma l'intelisense funzionava ancora mentre guardava la fonte.

Suggerirei di dare uno sguardo alle piattaforme di progetto e alle piattaforme di soluzione e mettere in ordine qualsiasi stranezza.

+0

Punta un punto di interruzione. Nel mio gestore di configurazione, ogni progetto è su "Qualsiasi CPU" tranne per Abc.Ui. Sto provando diverse configurazioni ora .. –