Differenze tra costruzione su una macchina con VS2010 installati e su una macchina con l'SDK 7.1 installato

StackOverflow https://stackoverflow.com/questions/4247437

  •  27-09-2019
  •  | 
  •  

Domanda

Stiamo cercando di aggiornare la nostra base di codice per utilizzare Visual Studio 2010, ma stiamo avendo problemi per ottenere tutto risolto sui nostri server di build. Noi non vogliamo installare Visual Studio 2010 sui nostri server di build e così abbiamo installato solo il .Net framework 4 e SDK (v7.1).

Stiamo ancora manca di indirizzare il 3,5 piattaforma .Net (ci sarà l'aggiornamento a .Net 4 ad un certo punto in futuro, ma non vogliamo solo ancora).

Siamo riusciti a ottenere il codice per compilare, ma ora stiamo incorrere in errori di runtime come il seguente.

Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Il problema è che il runtime sta cercando di deserializzare la risorsa incorporata e se guardo le risorse a riflettore, vedo che sono tutti gli oggetti NET 4.0. Ad esempio, l'icona delle nostre finestre di un applicazione è di tipo System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Quindi sembra che MSBuild sta compilando le risorse in modo non corretto (con un tempo di esecuzione diverso da quello di destinazione)? Ho confermato questo guardando le diff del dll costruita sulla mia macchina dev e che costruito sul server di build - è chiaro a vedere che le risorse di una DLL utilizzano 2.0.0.0 versione e l'altra (dal server di build) utilizza 4.0 .0.0. I riferimenti del progetto sono le DLL v2.0.0.0 in entrambi i casi (come ci si aspetterebbe).

Qualcuno ha qualche idea del perché MSBuild sta compilando le risorse come 4.0 oggetti?

Grazie in anticipo.

Chris

È stato utile?

Soluzione

Quando si esegue l'aggiornamento la soluzione per VS2010, hai cambiato il quadro mirato? È possibile cercarlo visualizzando i file csproj in un editor di testo. Avete il quadro 7.0a nella tua build server?

Modifica

Ho incontrato lo stesso problema qualche tempo fa e ha qualcosa a che fare con chiave di registro non impostato. Date un'occhiata qui: http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting net-3-5-genera--risorse incorporate sbagliato-

Credo che è necessario aggiungere manualmente la chiave di registro HKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPath

Altri suggerimenti

Non sono sicuro se questo aiuta, ma vedere questo link per quanto riguarda RequiresFramework35SP1Assembly Task

http://msdn.microsoft.com/en-us/library/ ff598689.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top