我正在使用Carbon的Powershell模块进行一些工作。当我将文件夹移动到另一台机器时,其中的脚本被标记并阻止执行,直到我解除阻塞它们(这很好)。当我执行以下操作时:
declare module 'alt-container' {
declare function hello(foo: string): number;
}
在创建新的Powershell会话之前,我仍然无法导入模块。此时文件肯定是未阻止的,但在创建新会话之前,我仍然会收到相同的错误。
我已经阅读了一些technet文章,他们声明你只需要关闭并打开Powershell来解决它,但没有理由说明为什么需要这样做。
答案 0 :(得分:0)
这实际上可以追溯到PowerShell所基于的.Net框架。您实际上是将新装配加载到流程中。被阻止的文件被视为"远程"文件,默认情况下.net未设置为加载它们。
How the Runtime Locates Assemblies
- Checks whether the assembly name has been bound to before如果是,则使用先前加载的程序集。
醇>
事情是,这一步缓存"否定"加载(至少根据我的经验,尝试加载其他程序集)。 .Net无法在卸载程序集后卸载程序集,因此除了重新启动该程序之外别无选择。