2014-12-17 16 views
5

Abbiamo migrato da TFS 2010 a TeamCity e abbiamo problemi nella creazione del nostro file di soluzione.Errori di compilazione in .NET 4.0 Soluzione ASP.Net + google-api-dotnet-client utilizzando il server build TeamCity

Stiamo usando .NET 4.0. La libreria di Google è notoriamente causa di problemi con .NET 4.0 + system.net.http quando si tenta di crearlo. Siamo riusciti a far funzionare questa installazione su TFS (utilizza MSBuild 4.0) senza errori.

App.config dovrebbe avere assemblybindings corrette:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Abbiamo già provato: - utilizzare diversi tipi corridore Visual Studio, MSBuild - a cui fa riferimento tutte le DLL direttamente (google + system.net.http + ecc) - Uso dritto Nuget pacchetto di ripristino su queste DLL (ripristina tutto ok)

errore Build è: ResolveAssemblyReference] C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion .targets (1635, 5): avviso MSB3268: Th Il riferimento principale "Google.Apis.Auth.PlatformServices, Version = 1.9.0.26016, Culture = neutral, processorArchitecture = MSIL" non può essere risolto perché ha una dipendenza indiretta sull'assembly framework "System.Net.Http, Version = 2.2 .22.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "che non è stato possibile risolvere nel framework attualmente selezionato. " .NETFramework, Version = v4.0" . Per risolvere questo problema, rimuovi il riferimento "Google.Apis.Auth.PlatformServices, Versione = 1.9.0.26016, Culture = neutral, processorArchitecture = MSIL" o reindirizza l'applicazione a una versione di framework che contiene "System.Net.Http, Version = 2.2.22.0, Cultura = neutrale, PublicKeyToken = b03f5f7f11d50a3a ".

Seguito da: [07:58:29] W: [MSBuild uscita] C: \ BuildAgent \ lavoro \ dda43f1992063b18 \ integrazioni \ CalendarSync \ Devices \ Google Calendar \ GoogleCalendarDevice.vb (788,78): BC30009 errore : Riferimento richiesto all'assembly "Google.Apis, Version = 1.9.0.23042, Culture = neutral, PublicKeyToken = null" contenente l'interfaccia implementata "Google.Apis.Requests.IDirectResponseSchema". Aggiungi uno al tuo progetto. [C: \ BuildAgent \ work \ dda43f1992063b18 \ Integrations \ CalendarSync \ Severa.Integrations.CalendarSync.vbproj]

risposta

1

Ora abbiamo una soluzione non ottimale al problema. MsBuild ritrova versione sbagliata da una delle seguenti posizioni:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.Net.Http.2.0.20710.0\lib\net40 

C:\Program Files (x86)\Microsoft Web Tools\Packages\Microsoft.Net.Http.2.0.20710.0\lib\net40 

Questo è sbagliato in quanto la versione in queste posizioni è: 1.0.0.0. Se sostituiamo tutti questi luoghi con 2.2.28 versione funziona .. Abbiamo cercato seguente:

  • Compliation.config aggiungere assemblaggio
  • web.config bindingRedirect
  • accenni di file Sln ai pacchetti di destra.

Sfortunatamente i nostri agenti TC sono in ambiente condiviso, quindi non possiamo sostituire questi file in tutte queste posizioni.

Qualche idea?

Problemi correlati