Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.NET Code Analyzer-regel CA1417 is standaard ingeschakeld vanaf .NET 5. Er wordt een buildwaarschuwing gegenereerd voor alle Platform Invoke-methodedefinities (P/Invoke) waarbij een parameter wordt doorgegeven door een String waarde en gemarkeerd met OutAttribute.
Beschrijving wijzigen
Vanaf .NET 5 bevat de .NET SDK .NET-broncodeanalyses. Verschillende van deze regels zijn standaard ingeschakeld, waaronder CA1417. Als uw project code bevat die deze regel schendt en is geconfigureerd om waarschuwingen als fouten te behandelen, kan deze wijziging de build verbreken.
Regel CA1417 markeert P/ Invoke-methodedefinities waarbij een String parameter is gemarkeerd met het OutAttribute kenmerk en wordt doorgegeven door de waarde. Voorbeeld:
[DllImport("MyLibrary")]
private static extern void PIMethod([Out] string s);
De .NET-runtime onderhoudt een tabel, de internpool genaamd, die één verwijzing bevat naar elke unieke letterlijke tekenreeks in een programma. Als een geïnterneerde tekenreeks die gemarkeerd is met OutAttribute door een waarde wordt doorgegeven aan een P/Invoke-methode, kan de runtime worden gedestabiliseerd. Voor meer informatie over het interneren van tekenreeksen, zie de opmerkingen bij String.Intern(String).
Geïntroduceerde versie
5,0
Aanbevolen actie
Als u gewijzigde tekenreeksgegevens naar de aanroeper moet terugsturen, geeft u de tekenreeks door met een referentie.
[DllImport("MyLibrary")] private static extern void PIMethod(out string s);Als u geen behoefte heeft om aangepaste tekenreeksgegevens terug naar de aanroeper te sturen, verwijder dan gewoon de OutAttribute.
[DllImport("MyLibrary")] private static extern void PIMethod(string s);Zie CA1417 voor meer informatie.
Als u codeanalyse volledig wilt uitschakelen, stelt u deze in
EnableNETAnalyzersfalseuw projectbestand in. Zie EnableNETAnalyzers voor meer informatie.
Betreffende API's
Kan niet worden gedetecteerd via API-analyse.