2012-06-26 7 views
5

Quando si utilizzano gruppi di terze parti, ho bisogno di un modo per rilevare se richiedono .NET 4 completo o solo il profilo del client .NET 4.Come determinare se una DLL richiede Full .NET 4 o solo profilo client

Ho visto altri modi per rilevare la versione .NET a cui si fa riferimento Determine .NET Framework version for dll ma i modi descritti in quella domanda non mostrano come rilevare il profilo del cliente rispetto al completo. È possibile?

Sto cercando qualsiasi soluzione, non deve essere una soluzione di codice/runtime.

+0

È possibile controllare manualmente i riferimenti per quelli che non sono inclusi con il profilo cliente (o scrivere uno strumento per farlo per voi!). Non sono sicuro di una via d'uscita. –

+0

AFAIK, Quando si utilizzano solo gli assembly, è necessario il profilo del client, è necessario il framework .net completo per scopi di sviluppo/debug. –

+0

Qualsiasi soluzione funzionerà, non deve essere solo il codice. – Evan

risposta

2

Si prega di notare che la soluzione qui di seguito è specifico per il framework .NET 4.0, il TargetFrameworkAttribue è nuovo a 4,0.

Ho compilato due applicazioni, una contro il framework client, l'altra contro il pieno. Li ho aperti entrambi in ildasm.exe e ho notato che entrambi avevano un TargetFrameworkAttribute applicato. Si può semplicemente utilizzare la reflection per vedere il valore:

using System; 
using System.Linq; 
using System.Runtime.Versioning; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var a = System.Reflection.Assembly.GetExecutingAssembly(); 
     var att = a.GetCustomAttributes(false).OfType<TargetFrameworkAttribute>().Single(); 

     Console.WriteLine(att.FrameworkDisplayName); 
     Console.Read(); 
    } 
} 

Aggiornamento: Sì, la compilazione di un ricorso contro il ".NET Framework 3.5 Profilo Cliente" fa non includono quell'attributo (il codice può non lo vedo più e ildasm non lo mostra). Non ho idea, a parte l'altra risposta che hai collegato, su come determinare il quadro di riferimento in questa situazione.

Per salvare imponente quello ho vedono limitazioni inutili sulla vostra base di codice, mi renderebbe la vita più facile e semplicemente indirizzare il quadro completo. Se il client ha le autorizzazioni per l'installazione del profilo client, lo stesso vale per il framework completo - è leggermente più grande (ho individuato una fonte che diceva che era solo il 15% più grande, annullando in tal modo gran parte del vantaggio del "pacchetto client più piccolo" , 41 MB rispetto a 48 MB). La tua chiamata.

Problemi correlati