.net 4.5.1 不支持在代码后面编写 "System.AppContext" 吗?

Is writing "System.AppContext" in code behind not supported in .net 4.5.1?

我的 .net 4.5.1 WPF 应用程序需要长路径支持。

App.config 中的此设置有效(支持长路径):

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

所以我尝试在代码中设置,但它并没有改变行为:

public App()
{
    // returns correct type:
    Type type = Type.GetType("System.AppContext"); 
    if (type != null)
    {
        // returns correct switch:
        MethodInfo 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.5.1 是否不支持“代码隐藏设置”?

Is that "code behind setting" not supported in .net 4.5.1?

不,不是。您应该使用 AppContext.SetSwitch 以编程方式设置开关,但由于此 API 是在 .NET Framework 4.6 中引入的,因此在早期版本上设置开关的唯一官方支持的方法是使用 App.config文件。