2014-05-09 22 views
10

Ho provato a cambiare il Target Framework nella mia app di recente da .NET Framework 4.5 a 4.5.2, ma se lo faccio ottengo il seguente errore quando provo a compilare: " 'Forms' non è un membro di 'Windows' "(ovvero, System.Windows.Forms). Il passaggio alla 4.5.1 funziona normalmente. Sto usando Visual Studio 2013 Ultimate.'Forms' non è un membro di 'Windows'

+1

4.5.2? È una beta o una RC? – Tim

+0

No, è una versione ufficiale, 4 giorni fa. –

risposta

20

Ho avuto questo errore quando si passa a 4.5.2.

Nel mio caso l'errore era correlato a un MessageBox ... Ho sostituito: "Windows.Forms.DialogResult.Yes" (che ha causato lo stesso messaggio di errore) con "System.Windows.Forms.DialogResult.Yes" che ha fatto il trucco

+0

Non funziona su 4.6.1 – Jim

7

Ho avuto lo stesso problema, anche io con i valori di enumerazione Windows.Forms.DialogResult.

Il progetto importa automaticamente System e System.Windows.Forms spazi dei nomi e ha funzionato fino a 4.5.1.

In 4.5.2 ho dovuto togliere Windows.Forms. e lasciare solo DialogResult.Ok (o qualsiasi altra cosa) nel mio codice, sembra essere un problema con risoluzione di spazi dei nomi.

+0

Non funziona su 4.6.1 – Jim

0

Assicurarsi di aggiungere System davanti allo Windows.Form.

+1

Alcuni chiarimenti dei passaggi sarebbero utili qui. –

2

Mi sono imbattuto in questo con un'applicazione ancora indirizzata a .NET 4.0, dove non è riuscita su un (nuovo) build server, ma è stata eseguita su quelli più vecchi.

L'ho ristretto a .NET 4.0 Targeting Pack solo installato sui vecchi server di compilazione. Il pacchetto di targeting è incluso in Visual Studio o nell'SDK di Windows 7.1. È per qualche motivo non distribuito separatamente, e con support ending for .NET 4, 4.5 and 4.5.1, non ho il sospetto che sia probabile che cambi. Poiché i miei server più vecchi sono in giro da un paio d'anni, hanno subito aggiornamenti sul posto e il pacchetto di targeting era già disponibile.

Quando si installa Windows 7.1 SDK su Server 2012R2, si lamenta qualcosa dell'effetto di "Una versione preliminare di .NET 4 è installata, installare la versione RTM". Per quanto posso dire, è semplicemente perché è installata una versione più recente) - Server 2012R2 viene fornito con 4.5.1. Ho provato a disinstallare tutte le versioni più recenti, ma non sono riuscito a ottenere l'SDK per installare il pacchetto di targeting.

quindi per installarlo:

Si dovrebbe ora avere una cartella %programfiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\ con la roba 4.0.

(EXTUI = 1 ignora la limitazione che non può essere installed separately).

Questo mi ha permesso di compilare progetti ancora con il targeting 4.0 (o di ricostruire vecchie revisioni/rami che lo avevano bersagliato in quel momento).