diff --git a/Directory.Build.targets b/Directory.Build.targets
index 36489df..4f4c042 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -19,6 +19,14 @@
 
 -->
 <Project>
+
+  <!-- Features in .NET Core 3.x and .NET 5 only -->
+  <PropertyGroup Condition=" $(TargetFramework.StartsWith('netcoreapp')) Or '$(TargetFramework)' == 'net5.0' ">
+
+    <DefineConstants>$(DefineConstants);FEATURE_ARGITERATOR</DefineConstants>
+
+  </PropertyGroup>
+  
   <!-- Features in .NET Standard and .NET Core only (no .NET Framework support) -->
   <PropertyGroup Condition=" $(TargetFramework.StartsWith('netstandard')) Or $(TargetFramework.StartsWith('netcoreapp')) ">
     
@@ -74,12 +82,19 @@
 
   <!-- Features in .NET Framework 4.6+ only -->
   <PropertyGroup Condition="$(TargetFramework.StartsWith('net46')) Or $(TargetFramework.StartsWith('net47')) Or $(TargetFramework.StartsWith('net48'))">
+    
     <DefineConstants>$(DefineConstants);FEATURE_ARRAYEMPTY</DefineConstants>
+
   </PropertyGroup>
 
+  <!-- Features in .NET Framework 4.5+ -->
   <PropertyGroup Condition="$(TargetFramework.StartsWith('net4'))">
     
+    <DefineConstants>$(DefineConstants);FEATURE_ARGITERATOR</DefineConstants>
     <DefineConstants>$(DefineConstants);FEATURE_SERIALIZABLE_EXCEPTIONS</DefineConstants>
+    <!-- Although HostProtectionAttribute is available in .NET Standard 2.0+ via platform extensions, we are excluding
+         it due to the fact it is not a primary feature of Lucene.NET -->
+    <DefineConstants>$(DefineConstants);FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION</DefineConstants>
     
     <DebugType>full</DebugType>
   </PropertyGroup>
diff --git a/src/Lucene.Net/Support/Util/SystemConsole.cs b/src/Lucene.Net/Support/Util/SystemConsole.cs
index 07b6e32..9a31936 100644
--- a/src/Lucene.Net/Support/Util/SystemConsole.cs
+++ b/src/Lucene.Net/Support/Util/SystemConsole.cs
@@ -1,7 +1,7 @@
 ﻿using System;
 using System.IO;
 using System.Runtime.CompilerServices;
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
 using System.Security.Permissions;
 #endif
 
@@ -37,7 +37,7 @@
         public static TextReader In { get; set; } = Console.In;
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(bool value)
@@ -46,7 +46,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(char value)
@@ -55,7 +55,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(char[] buffer)
@@ -64,7 +64,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(decimal value)
@@ -73,7 +73,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(double value)
@@ -82,7 +82,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(int value)
@@ -91,7 +91,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(long value)
@@ -100,7 +100,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(object value)
@@ -109,7 +109,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(float value)
@@ -118,7 +118,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(string value)
@@ -127,7 +127,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining), CLSCompliant(false)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(uint value)
@@ -136,7 +136,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining), CLSCompliant(false)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(ulong value)
@@ -145,7 +145,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(string format, object arg0)
@@ -154,7 +154,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(string format, params object[] arg)
@@ -170,7 +170,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(char[] buffer, int index, int count)
@@ -179,7 +179,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(string format, object arg0, object arg1)
@@ -188,7 +188,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void Write(string format, object arg0, object arg1, object arg2)
@@ -196,9 +196,11 @@
             Out.Write(format, arg0, arg1, arg2);
         }
 
-#if !NETSTANDARD
+#if FEATURE_ARGITERATOR
         [MethodImpl(MethodImplOptions.NoInlining), CLSCompliant(false)]
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
+#endif
         public static void Write(string format, object arg0, object arg1, object arg2, object arg3, __arglist)
         {
             ArgIterator iterator = new ArgIterator(__arglist);
@@ -217,7 +219,7 @@
 #endif
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine()
@@ -226,7 +228,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(bool value)
@@ -235,7 +237,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(char value)
@@ -244,7 +246,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(char[] buffer)
@@ -253,7 +255,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(decimal value)
@@ -262,7 +264,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(double value)
@@ -271,7 +273,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(int value)
@@ -280,7 +282,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(long value)
@@ -289,7 +291,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(object value)
@@ -298,7 +300,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(float value)
@@ -307,7 +309,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(string value)
@@ -316,7 +318,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining), CLSCompliant(false)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(uint value)
@@ -325,7 +327,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining), CLSCompliant(false)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(ulong value)
@@ -334,7 +336,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(string format, object arg0)
@@ -343,7 +345,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(string format, params object[] arg)
@@ -359,7 +361,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(char[] buffer, int index, int count)
@@ -368,7 +370,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(string format, object arg0, object arg1)
@@ -377,7 +379,7 @@
         }
 
         [MethodImpl(MethodImplOptions.NoInlining)]
-#if !NETSTANDARD
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
 #endif
         public static void WriteLine(string format, object arg0, object arg1, object arg2)
@@ -385,9 +387,11 @@
             Out.WriteLine(format, arg0, arg1, arg2);
         }
 
-#if !NETSTANDARD
+#if FEATURE_ARGITERATOR
         [MethodImpl(MethodImplOptions.NoInlining), CLSCompliant(false)]
+#if FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION
         [HostProtection(SecurityAction.LinkDemand, UI = true)]
+#endif
         public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist)
         {
             ArgIterator iterator = new ArgIterator(__arglist);
