如何在c#交互式窗口中设置通常在app.config中定义的开关

本文关键字:app config 开关 定义 设置 交互式 窗口 | 更新日期: 2023-09-27 18:01:21

我试图用c#交互式REPL加载DLL(来自Roslyn)。它抛出以下异常:

"试图从网络位置加载程序集会导致程序集在以前的版本中被沙盒化. net框架。这个版本的。net框架不支持默认的CAS策略,所以这个负载可能是危险的。如果这个负载是不打算沙箱程序集,请启用loadFromRemoteSources开关。看到更多信息请访问http://go.microsoft.com/fwlink/?LinkId=155569。"

DLL不在网络位置上,所以我不知道为什么会抛出这个异常。无论如何,没有app.config文件供我修改(据我所知),所以有人知道我如何解决这个错误吗?

更新:

我已经解除了程序集的阻塞,这将使此异常消失。但我仍然想回答更一般的问题,我如何在c#交互式窗口中设置通常在app.config中定义的开关?

如何在c#交互式窗口中设置通常在app.config中定义的开关

所讨论的程序集在尝试加载时不需要位于网络位置。您看到的消息是警告您,您正在尝试加载的程序集(在某些时候)是从互联网下载的,并且当前标记为不受信任。

对于元问题,大多数配置设置映射到一个或多个代码结构(API,属性等),允许您以编程方式调整设置以满足您的需求。如何修改特定的设置取决于它所影响的设置和API。在某些情况下,您可能需要编写代码来配置运行时,在其他情况下,您可能必须配置IIS,日志记录和跟踪,WCF端点等。

如果你阅读了上面链接的文章,你会发现以下内容:

如果一个应用程序是从web上复制的,它被Windows标记为web应用程序,即使它驻留在本地计算机上。您可以通过更改文件属性来更改该名称,也可以使用该元素授予程序集完全信任。作为一种替代方法,您可以使用UnsafeLoadFrom方法来加载操作系统标记为已从web加载的本地程序集。

一般来说,使用UnsafeLoadFrom可能比让你的应用程序从不受信任的来源下载任意程序集并在你的应用程序中完全信任地运行更安全。

医生接着说:

该元素通常在应用程序配置文件中使用,但也可以根据上下文在其他配置文件中使用。有关更多信息,请参阅. net安全博客中的文章CAS策略的更多隐式使用:loadFromRemoteSources。

仔细阅读后一篇文档——它演示了你需要编写的代码来实现与设置loadFromRemoteSources配置标志相同的结果:然而,不要低估将任意代码加载到应用程序中的危险!