2010-09-03 6 views
5

Abbiamo un'applicazione Web ASP.Net in esecuzione in Visual Studio 2010 destinata al 3.5 .Net. È in fase di costruzione da parte di TFS 2010. Questa applicazione web ha un paio di riferimenti Web, quindi la build crea una DLL XmlSerializers correlata. Questa DLL, tuttavia, è un assembly .Net 4.0.TFS 2010 creazione. NET 4.0 XmlSerializers DLL per .Net 3.5 Applicazione

Quando eseguo questa applicazione web dal costruire, ottengo l'errore:

Could not load file or assembly 'BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Stiamo usando un file msbuild .proj che lavorava sotto TFS 2008 (utilizzando il "Amplia modello" nella build Definizione). Ho visto this question e this one, ma quelli menzionano l'utilizzo di una specifica fase di generazione di SGen. Non siamo. Inoltre, la soluzione proposta prevede l'hard-coding del percorso per SGen 7.0A, che è solo ... brutto.

C'è un modo per forzare la compilazione TFS 2010 per compilare questa DLL XmlSerializers come un assembly .Net 3.5?

+0

Hai impostato il framework di destinazione sul progetto serializzatore su 3.5? Controlla le proprietà del progetto. – Robaticus

+0

Non sono sicuro di cosa intendi con "il progetto serializzatore". Il progetto che utilizza i riferimenti Web ha come target 3.5. C'è un'altra impostazione per i riferimenti web? –

risposta

4

Il problema di root era un valore non valido nel registro. Il valore SDK35ToolsPath in HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 è stato:

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\[email protected])

Tuttavia, il server di build aveva SDK di Windows versione 7.1. Così, ho corretto il valore di essere:

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\[email protected])

Poi XmlSerializers DLL ora stavo usando .Net 2.0.