Bonsoir,
je n'arrive pas à me sortir des messages que le compilo m'envoie sur un projet compilé en .NET2 :
j'ai bien regardé la page de M$ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 internal sealed class NativeMethods { private NativeMethods() { } [SecuritySafeCritical] [DllImport("kernel32.dll", EntryPoint = "GetCurrentProcess", CharSet = CharSet.Auto, SetLastError = true)] public static extern IntPtr GetCurrentProcessPInvoke(); [SecuritySafeCritical] public static IntPtr GetCurrentProcess() { IntPtr Result = GetCurrentProcessPInvoke(); return Result; } }
https://msdn.microsoft.com/fr-fr/library/dn621099.aspx
l'erreur CA1903 est liée à mon ajout de [SecuritySafeCritical] qui n'existe que dans .NET 2 SP2.
CA1903 Utiliser uniquement l'API à partir du Framework cible Le membre 'NativeMethods.GetCurrentProcessPInvoke()' utilise le type 'SecuritySafeCriticalAttribute'. Comme ce type a été introduit dans .NET Framework 2.0 Service Pack 2, qui n'était pas inclus dans le Framework cible du projet, .NET Framework 2.0, il se peut que l'exécution de votre application échoue sur les systèmes où ce Service Pack n'est pas installé. Nolme.Configuration NativeMethdos.cs 16
l'erreur CA5122 reste un mystère. Et comme je n'aime pas trop faire sauter des warnings à coup de #pragma...
CA5122 Les déclarations P/Invoke ne doivent pas être sécurisées. La méthode P/Invoke 'NativeMethods.GetCurrentProcessPInvoke()' est marquée comme méthode sécurisée. Les éléments P/Invoke ne pouvant être appelés que par le code critique, vous devez soit marquer cette déclaration comme étant critique de sécurité, soit supprimer complètement son annotation pour éviter toute confusion. Nolme.Configuration NativeMethdos.cs 16
Une idée ?
Merci,
Vincent
Partager