2017-11-28 7 views
1

私はコンソールアプリケーションに次のスイッチ設定を埋め込もうとしていますが、必要ないようにapp.configが必要です。アプリ内でこのスイッチを設定する別の方法はありますか?コードのスイッチを設定する

私はAppContext.SetSwitchに出くわしましたが、これは.NET 4.6でのみ利用可能ですが、私のアプリはXPマシンで実行する必要があります。これを行う別の方法がありますか?

<runtime> 
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" /> 
</runtime> 
+0

'AppContextSwitchOverrides'また、.NET 4.6 – dovid

答えて

1

は、.NET 4.6より低いバージョンをターゲットとapp.configをせずに、あなたがこれを行うことができますことを実行する場合:

var type = Type.GetType("System.AppContext"); 
if (type != null) { 
    var setSwitch = type.GetMethod("SetSwitch", BindingFlags.Public | BindingFlags.Static); 
    setSwitch.Invoke(null, new object[] { "Switch.System.IO.UseLegacyPathHandling", false }); 
    setSwitch.Invoke(null, new object[] { "Switch.System.IO.BlockLongPaths", false }); 
} 

そのように、あなたのアプリケーションは、現在、.NET 4.6上で動作している場合+(AppContextが利用可能で、実際にこれらのスイッチが実際に効果を発揮する場所) - あなたが設定した場合、それ以外の場合は何もしません。

関連する問題