2010-11-09 3 views
6

J'ai une application qui fonctionne bien sur .Net 2.0 SP2, mais ne fonctionne pas correctement sur .NET 2.0 RTM. (FYI: Il échoue lors de l'appel d'une méthode une DLL gérée qui est un wrapper pour une DLL native pour la programmation USB).Est-il possible de spécifier le service pack .NET dans "supportedRuntime" dans app.config?

Je sais que vous pouvez donner runtimes pris en charge dans le app.config d'un C# .NET

<startup> 
    <supportedRuntime version="v2.0.5727" /> 
    <supportedRuntime version="v4.0" /> 
    </startup> 

Cependant, il est également possible de spécifier une version Service Pack spécifique?

Merci!

Modifier: J'ai maintenant découvert quelle méthode échoue entre 2.0 et 2.0 SP2. C'est WaitHandle.WaitOne (int) qui a été ajouté dans 2.0 SP1.

Une astuce pour tout le monde ayant le problème, le compilateur ne dit rien mais si vous obtenez l'exécutable avec l'exécution problématique, il vous donne l'erreur exacte.

Par exemple:

Warning: System.MissingMethodException: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'. while resolving 0xa0000e1 - System.Threading.WaitHandle.WaitOne. 
11/11/2010 01:54:07 [3620]: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'. while compiling method XXX 

Rogier

+1

Découvrez ... http: //stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed –

Répondre

1

explication Grande se trouve sur here pourquoi est-ce pas possible. Vous pouvez trouver une réponse SO here pour répondre à vos besoins.

<supportedRuntime> ne fonctionne pas de cette façon, car le framework 3.5 utilise le runtime 2.0. Vous pouvez seulement spécifier runtimes de cette façon, pas cadres, et l'élément exprime seulement la préférence, pas la demande.

+0

OK, semble logique. J'ai pris soin de tous les détails dans mon installateur NSIS, mais certains utilisateurs copiaient les fichiers sur d'autres PC ... – Rogier

0

Essayez ceci (pour .net 2.0 sp2):

<supportedRuntime version="2.0.50727.1433" /> 

.NET Framework versions here.

+0

Ne fonctionne pas. Citant: "La valeur de chaîne doit correspondre au nom de répertoire trouvé sous la racine d'installation .NET Framework." –

+0

Eh bien, j'ai commencé le post avec "Try". Je ne vais pas le supprimer pour que les autres puissent voir que ce n'est pas une option valide. –

+0

Toujours travailler dessus dans VMWare mais ne semble pas fonctionner. – Rogier

Questions connexes