2012-12-12 21 views
10

In Visual Studio 2012 in una nuova libreria di classi vuoto Sto cercando di aggiungere il riferimento a un progetto esistente nella soluzione, anche una libreria di classi, MonoGame.Framework.Windows8 (https://github.com/mono/MonoGame), ma l'errore:Visual Studio 2012 Come eseguire il debug di "Impossibile aggiungere riferimento al progetto x" errore?

Unable to add reference to Project MonoGame.Framework.Windows8

Ho costruito la libreria esistente, MonoGame, con successo e ne ho fatto una dipendenza da quella nuova. Quale potrebbe essere il problema?

(E 'estremamente fastidioso il messaggio di errore non dà una ragione!)

+1

È possibile provare a msbuild (dal prompt dei comandi di Visual Studio). –

+0

non ho familiarità con msbuild - presumibilmente dovrei modificare manualmente il file .csproj per aggiungere prima il riferimento all'altro progetto? – markmnl

risposta

11

Cercando di aggiungere il dll costruita ha un riferimento ha dato un messaggio di errore più esplicito che ha risolto il problema per me, ha detto:

“A reference to ‘x’ could not be added. The project targets ‘.NetFramework’ while the file reference targets ‘.NetCore’. This is not a supported scenario”

La Libreria di classi MonoGame è una libreria di classi (applicazioni Windows Store) genere! (Il bit tra parentesi è importante! Presumibilmente la differenza è che il tipo di app di Windows Store usa .Net Core che non è lo stesso di .Net Framework).

Per farlo funzionare, il progetto deve essere una libreria di classi (app di Windows Store) disponibile nell'opzione Windows Store in Aggiungi nuovo progetto.

+0

Mi stavo strappando i capelli. È nascosto quasi nascosto! Grazie! – NibblyPig

7

Ho il sospetto che il problema è fare con il 'quadro di riferimento' nelle opzioni di progetto.

Non so come funziona MonoGame per Windows 8 ma quando si sviluppa per Android le opzioni di framework di destinazione sono le diverse versioni di Android [ad es. Android 2.2 (Froyo)]. Quando crei una normale libreria di classi puoi scegliere tra le diverse versioni di .NET framework o Mono [ad es. Mono/.NET 4.0].

Sfortunatamente, queste strutture non sono compatibili l'una con l'altra. Non è possibile aggiungere un riferimento di progetto per Android a una libreria di classi .NET framework e viceversa.

La soluzione è utilizzare un Portable Class Library. Sono specificamente progettati per affrontare questo problema. Il rovescio della medaglia è che avrai accesso solo al sottoinsieme degli assembly forniti nel minimo denominatore che scegli di scegliere come target.

Si potrebbe anche prendere in considerazione la condivisione del codice tra progetti che utilizzano file collegati. Può rendere la manutenzione un po 'più complicata, ma ti dà un po' più di controllo sul codice che dovrebbe essere compilato in entrambi i framework di destinazione ma non si adatta alla libreria di classi portatile. Ecco una domanda correlata:

Project reference vs. file links in Mono multi-target projects

La chiave di tutto questo una volta capito che cosa sta succedendo qui è come si struttura la vostra soluzione. Con un po 'di attenzione puoi avere quasi tutto il tuo codice condiviso su piattaforme diverse.

2

L'errore potrebbe essere dovuto al fatto che entrambi i progetti utilizzano versioni di Framework diverse e modificano le versioni di Framework in entrambi i progetti della sezione delle proprietà, quindi il problema potrebbe risolversi.

Problemi correlati