如何修复“对类型 'IAsyncEnumerable<>' 的引用声称它是在 'System.Interactive.Async' 中定义的,但找不到它”?

Posted

技术标签:

【中文标题】如何修复“对类型 \'IAsyncEnumerable<>\' 的引用声称它是在 \'System.Interactive.Async\' 中定义的,但找不到它”?【英文标题】:How to fix 'Reference to type 'IAsyncEnumerable<>' claims it is defined in 'System.Interactive.Async', but it could not be found'?如何修复“对类型 'IAsyncEnumerable<>' 的引用声称它是在 'System.Interactive.Async' 中定义的,但找不到它”? 【发布时间】:2020-02-03 10:26:52 【问题描述】:

直到昨天它还在工作,我什至没有触摸代码,但弹出了这个错误,因为它只是这样说:

对“IAsyncEnumerable”类型的引用声称它定义在 'System.Interactive.Async',但找不到。

我做了一个不和谐的机器人,我想用它删除消息

        [Command("clear")]
        public async Task Clear(string StringNum = null)
        
            try
            
                if (!Context.Guild.CurrentUser.GuildPermissions.ManageMessages)
                
                    await ReplyAsync("Sorry, I don't have permission for this!");
                
                else
                
                    var user = Context.User as SocketGuildUser;
                    if (user.GuildPermissions.ManageMessages)
                    
                        int IntNum = 1;
                        bool intparse = int.TryParse(StringNum, out int n);
                        if (intparse)
                        
                            IntNum = int.Parse(StringNum);
                        

                        var messages = await Context.Channel.GetMessagesAsync(IntNum + 1).Flatten();
                        await (Context.Channel as SocketTextChannel).DeleteMessagesAsync(messages);
                    
                    else
                    
                        await ReplyAsync("You don't have permission for this command!");
                    
                
            
            catch (Exception ex)
            
                Console.WriteLine(ex.GetBaseException());
            
        

错误出现在我尝试获取消息的行

【问题讨论】:

这不是代码,而是参考。你确定你已经设置了对 System.Interactive.Async 的引用吗?很有可能,如果它已经奏效的话。有时,如果您更改平台目标 (x86/x64) 或 .NET Framework 的版本,引用的 DLL 可能会变得不兼容。从系统 Dlls 中它通常会找到正确的路径,但这取决于如何设置引用。如果通过从文件系统中选择一个文件,这是硬编码并且不会移动。只是一个想法来检查。 有一个包更新,显然这只是破坏了我的代码 我从 csproj 中删除了对 System.Interactive.Async 4.0.0 的显式引用,并且错误消失了。 【参考方案1】:

我遇到了这个。我必须安装 System.Interactive.Async 3.1.1 而不是 4.0.0。所以我认为它不再在 4.0.0 中。

【讨论】:

以上是关于如何修复“对类型 'IAsyncEnumerable<>' 的引用声称它是在 'System.Interactive.Async' 中定义的,但找不到它”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统