2014-11-13 13 views
7

TFS 2013 - Corporatura: ASP.Net 4.5.1 sito ottengo questo errore:Dipendenza sul gruppo quadro "System.Runtime, Version = 4.0.10.0," che non poteva essere risolta nel quadro attualmente mirato

warning MSB3268: The primary reference "C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" 
could not be resolved because it has an indirect dependency on the framework assembly 
"System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which 
could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5.1". To resolve this problem, either remove the reference 
"C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" or retarget your application to a framework 
version which contains "System.Runtime, Version=4.0.10.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a". 

Tutti i progetti e il sito sono stati inizialmente 4.0 utilizzando Unity 1.0.0.0. L'ho aggiornato a 4.5.2. Anche il MyProj1 nell'errore sopra fa riferimento a Unity e l'ho aggiornato anche a 3.5.1.

Leggi questo: https://unity.codeplex.com/workitem/12756 Il server di build ha già il punto 4.5.2 aggiornato nella soluzione alternativa.

Quindi ho eseguito il downgrade alla 4.5.1 ma ho ancora ricevuto l'errore.

  • Soluzione costruisce bene a livello locale tramite lo studio visivo librerie di classi solo 2013.

  • Il progetto stand costruire in TFS bene, ma quando si aggiunge MyProj come riferimento al mio sito web, che è quando non riesce.

Qualche idea?

Sono necessarie modifiche di web.config diverse da TragetFramework durante l'aggiornamento?

+0

Penso di sì. Hai esaminato ? – Spock

+0

@Spock No, non l'ho fatto. Qualsiasi suggerimento su cosa deve essere fatto lì. Come dice l'errore e vedo che Unity 3.5 necessita di Runtime 4.0.10.0 ma il mio sito è indirizzato a 4.5.2. In questo caso, come sarà l'impostazione? – gbs

risposta

1

Ho dovuto aggiornare il mio Unity a 3.5 a causa della dipendenza del mio progetto da qualche altro progetto e questo errore è venuto di nuovo. Questa volta, finalmente l'ho risolto.

Questo mi ha aiutato: http://devsilos.blogspot.com/2014/10/msb3268-while-targeting-aspnet-web-site.html

Soluzione Ho copiato tutti i file che costruiscono è stato lamentano da:

C: \ Program Files (x86) \ Riferimento Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.2 \ Facciate

To

C: \ Program Files (x86) \ Riferimento Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.2

Ecco la spiegazione dal link qui sopra nel caso in cui si scende per qualsiasi motivo, in futuro:

A deeper inspection revealed the following interesting fact: aspnet_compiler for some reason does not take into account the .dll-s that reside under the Facade directory of 4.5 assemblies (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades). It looks only under C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5

As a result the whole thing failed since both System.Threading.Tasks and System.Runtime .dll-s were under the Facades directory and not inside the v4.5.

Now the solutions:

  • Just simply copy the missing .dll-s from Facade to the v4.5 directory.
  • Set the TargetFrameworkMoniker to 4.5.1 in the .sln file. The exact syntax is as follows: TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5.1".

What happens in this case is that the aspnet_compiler does not recognize the exact version of the required framework and tries to use the GAC wherever it can. If 4.5 is the highest version installed on the build machine I believe it should work.

2

In realtà mi dispiace non credo che "assemblyBinding" possa essere d'aiuto. Sembra un known bug. Non è stato risolto. Usando Unity 3.5 puoi scegliere .NET 4.5.1 ma non 4.5.2. Quindi un'opzione sarebbe quella di re-target su .NET 4.5.1 e vedere se il problema scompare, se questa è un'opzione.

p.s. Anche tu puoi provare .NET Framework 4.5.2 Developer Pack. Ma alcuni hanno detto che non ha funzionato.

+0

Sì, questo è l'errore che ho menzionato nella domanda e avevo già provato un nuovo pacchetto per sviluppatori e non ha funzionato. E ho già rinunciato e mi sono trasferito a 4.5. – gbs

+0

Installazione dello .Net Framework 4.5.2 Developer Pack ha funzionato per me. – deadlydog

0

Recentemente abbiamo incontrato un problema simile con un sito che è stato aggiornato per indirizzare .NET 4.5, e inizialmente ha seguito la soluzione in gbs's answer.

Nel nostro caso, abbiamo avuto diversi avvertimenti che seguono questo modello:

<project name>.metaproj : warning MSB3268: The primary reference "<project reference>.dll" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5". To resolve this problem, either remove the reference "<project reference>.dll" or retarget your application to a framework version which contains "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".

Abbiamo poi scoperto che se si crea un nuovo sito Web rivolte 4.5.x (File> Nuovo> Sito Web ...) e selezionare il modello Sito Web vuoto ASP.NET , il pacchetto Microsoft.Net.Compiler è incluso. L'aggiunta di questo pacchetto al nostro sito ha risolto il problema senza la necessità di toccare gli assembly di riferimento.

Delle due soluzioni originali, la copia dei file ha causato il successo della compilazione ma ha presentato problemi di manutenzione e la modifica di TargetFrameworkMoniker (a 4.5.3 anziché 4.5.1) ha prodotto un errore di compilazione diverso ed era una soluzione fragile.

+0

Non ho provato a usare esplicitamente la seconda opzione. Sì, la manutenzione sarebbe un problema e se è stato installato un nuovo build server, dobbiamo risolvere anche questo. Proverò la tua correzione. Ho trovato la soluzione due giorni fa, vorrei averlo trovato prima di me, mi avrebbe potuto risparmiare ore :) – gbs