2012-10-14 14 views
13

Ho uno strano problema aggiungendo un riferimento a dll. Ho un'applicazione WPF e sto cercando di utilizzare la libreria WPF MDI: http://wpfmdi.codeplex.com/Riferimento assembly non trovato in XAML, ma il codice viene compilato quando si fa riferimento nella classe xaml.cs

Come indicato nelle istruzioni (che sono molto vaghe), right-cliccato su riferimenti in VS2012, cliccato su Add reference.., cliccato su Browse.. e ho aggiunto la mia DLL che ho scaricato.

Successivamente, ho aggiunto la seguente riga nello XAML della mia finestra: xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI" come indicato nelle istruzioni.

Tuttavia, quando si cerca di aggiungere un <mdi:MdiContainer> in XAML, vengono visualizzati i seguenti messaggi di errore:

The type 'mdi:MdiContainer' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.

The name "MdiContainer" does not exist in the namespace "clr-namespace:WPF.MDI;assembly=WPF.MDI".

Questo è il mio XAML:

<Window x:Class="QueryBuilder.Table" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI" 
     Height="300" Width="300" WindowStyle="ToolWindow" ResizeMode="NoResize" ShowInTaskbar="False"> 
</Window> 

Questo il problema mi ha frustrato per tutto il giorno. Ho provato quasi tutto immaginabile. Una cosa che vale la pena di notare è che ho ridimensionato l'applicazione di esempio dal sito della libreria e posso eseguirla senza problemi. Oltre a questo, ho aggiunto questo alla classe xaml.cs del mio progetto: WPF.MDI.MdiContainer d = new WPF.MDI.MdiContainer(); e si compila senza problemi.

Si prega di notare anche che il mio problema iniziale è stato chiesto here, e nessuno dei suggerimenti ha funzionato. Il problema è ora cambiato, tuttavia, a causa del paragrafo precedente che sembra indicare che il codice è stato compilato correttamente nel codice sottostante, ma non nel file XAML.

MODIFICA: Vorrei anche aggiungere che sono in grado di sfogliare il codice del riferimento all'assembly come mostrato di seguito.

enter image description here

risposta

9

ho finalmente risolto il problema io stesso - intenzione di lasciare questa risposta qui in caso qualcuno ha lo stesso problema qualche tempo. L'aggiunta della soluzione stessa al percorso di riferimento dell'assembly risolve il problema! È un peccato che questo non sia documentato ...

MODIFICA: Per chiarire, quello che ho fatto è stato aggiungere la soluzione, piuttosto che la DLL. In altre parole, ho aggiunto la soluzione MDI con tutte le sue classi. Questo vale naturalmente anche per le DLL in cui è disponibile anche il codice sorgente.

+6

Potete chiarire questo con un esempio? Non sono sicuro di cosa intendi – msnider

+0

Aggiunti alcuni chiarimenti. Spero che questo aiuti, dato che questo problema è stato estremamente frustrante per me! –

+0

Sì, ma non ho la soluzione, ma solo la DLL =/ – Tito

6

Se Visual Studio continuerà a lamentarsi e sottolineare anche dopo aver provato tutto, basta terminare il processo XDesProc.exe utilizzando Task Manager e quindi ricostruire la soluzione. Il supporto di WPF e XAML in Visual Studio è un pessimo pezzo di merda.

+0

Wow. Grazie uomo. Mi stava facendo impazzire. – int21h

+0

Questo ha risolto anche il mio problema. –

1

Ottenuto file sln da http://wpfmdi.codeplex.com/. Costruire quel progetto e utilizzare il nuovo .dll dal cestino, usato quello, quindi ha funzionato bene per me.