VS2015 C# 交互式环境: 错误 CS7069: 引用类型 'Object' 声明在 'System.Runtime' 中定义,但未找到

9

我刚刚更新到VS2015 Update 2,并开始尝试使用C#交互式窗口。我想在我的一个.NET 4.0目标库项目中使用静态类中的静态方法,所以我右键单击解决方案资源管理器中的项目,然后选择用项目初始化交互式。交互式窗口的输出如下所示(我用“..”替换了一些完整路径以缩短长度):

#reset
Resetting execution engine.
Loading context from 'CSharpInteractive.rsp'.
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll"
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll"
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.IO.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Net.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.Runtime.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.Threading.Tasks.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.Linq.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.DataSetExtensions.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.CSharp.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll"
#r "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.dll"
#r "MyDll.dll"
using MyDll;
(1,7): error CS7069: Reference to type 'Object' claims it is defined in 'System.Runtime', but it could not be found

请注意末尾的恶意小行,阻挡了我通往幸福的道路: (1,7): error CS7069: 引用类型 'Object' 声明在 'System.Runtime' 中定义,但未找到 我可以在项目中得到类的智能提示,但每次尝试运行语句时都会出现相同的错误。我仍然可以运行简单的语句,例如:
> string.Format("No one knows my {0}", "suffering")
"No one knows my suffering"
>

有没有任何想法关于为什么会发生这种情况或者如何修复它?如果有任何建议的修复方法,我将更新这个问题并标记其成功与否。


看起来像这样,你当然需要记录你的项目类型。如果你认为它需要工作,请使用connect.microsoft.com。 - Hans Passant
@HansPassant,我不太确定如何将那个答案映射到这个问题上,但我尝试从交互窗口执行System.Reflection.Assembly.Load(...)。无论我在哪里输入它,甚至尝试使用语句using System.Reflection;,都会在System下面出现红色波浪线-这有用吗? - Jeff
@PauloMorgado,您指的是哪一部分?“命令行界面”与我所描述的交互式窗口是否有所不同?我不知道还有其他窗口可以使用此功能。 - Jeff
@PauloMorgado 我并没有自己输入 #reset。当我从解决方案资源管理器中的项目上下文菜单中选择“使用项目初始化交互”时,就会发生这种情况。 - Jeff
@HansPassant请看一下我下面的答案-如果你感兴趣,我很想听听你对此的看法。 - Jeff
显示剩余2条评论
3个回答

8

对我来说最终解决问题的方法是在C#交互窗口中输入以下内容:

#r "System.Runtime"

如果有人能够提供详细的背景说明以解释为什么这个方法有效,我很乐意将其作为被采纳的答案。我只是运气好而已。


1
你在哪里输入它?! - JotaPardo
1
@JotaPardo 在C#交互窗口中正确。 - Jeff

3
虽然现在添加答案可能有些晚,但实际上这仍然是与 Visual Studio 2019 (v16.9.4) 相关的可能存在的问题,或者至少对我来说是这样的...... 在我的情况下,它与对解决方案中一个项目的引用有关,而不是与 .NET Framework 标准包的引用有关。 我通过以下步骤成功解决了此问题:
1.从出现问题的项目中删除包/项目引用。 2.清理已出现问题的项目 (要进行更多清理,您还可以从资源管理器中删除 bin/obj 文件夹)。 3.如果引用是一个项目,则CleanRebuild引用的项目。 4.再次添加包/项目的引用,然后重新生成整个解决方案。
希望能有所帮助!

0

我引用了一个不兼容的包,导致了这个错误。在升级包时被忽视了。移除引用并修复命名空间解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接