如何修复“对类型 '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' 中定义的,但找不到它”?的主要内容,如果未能解决你的问题,请参考以下文章