如何为 LINQPad 设置 NetFx40_LegacySecurityPolicy?

How do I set NetFx40_LegacySecurityPolicy for LINQPad?

当我使用来自 LINQPad 的遗留库时,我得到了 NotSupportedException。我发现此异常是由于 .NET Framework.

中的 Code Access Security 弃用所致

https://msdn.microsoft.com/en-us/library/ee191568(v=vs.110).aspx

所以我根据 MSDN 文章将 <NetFx40_LegacySecurityPolicy> 添加到 LINQPad.config 文件,但它仍然导致 Exception。将配置元素添加到 LINQPad.UserQuery.exe.config 对我有帮助,但它似乎在启动时重新生成 LINQPad.

还有其他方法可以为 LINQPad 添加配置元素吗?

(为什么这个元素在 LINQPad.config 中不起作用 ...)

示例(原因相同Exception):

// Add reference for System.Security.dll and import namespace System.Security.
new HostSecurityManager().DomainPolicy

LINQPad runs used to run each query in a new AppDomain and not in a new Process 以来,我假设 'restricted' 程序本身就是 LINQPad.exe(我不知道使用的是哪个版本的 LINQPad,所以这是一个可能的解决方案。)

LINQPadLINQPad.exe.config 加载自己的配置,尝试向其中添加所需的配置而不是 LINQPad.config 文件 - 这是查询配置文件。

此外,请确保您有 right configuration hierarchy:

<configuration>
   <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true|false"/>
   </runtime>
</configuration>

NetFx40_LegacySecurityPolicy 的不寻常之处在于它必须来自进程的配置文件,而不是 AppDomain。

如果您在 LINQPad 中禁用进程隔离,解决方法是将设置放入 LINQPad.exe.config 而不是 LINQPad.config

此变通办法不适用于启用进程隔离,但是这将在 LINQPad 更新 (v5.05.04) 中得到解决。测试版将很快发布。