Visual Studio 要求我引用一个不存在的程序集
Visual Studio asks me to reference a nonexistent assembly
我以某种方式将我的项目带到了 Visual Studio 2013 无法编译它并出现荒谬错误的状态:
The type 'System.Collections.Generic.Dictionary`2' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
首先,没有这样的程序集,它不存在。
其次,Dictionary<TKey, TValue>
定义在mscorlib.dll
中,当然是默认引用的。 Resharper(它有自己的代码分析引擎)报告解决方案应该可以正常编译。
我不知道它到底是怎么发生的,因为我最近的更改与所谓的错误地方完全无关。该行引用了一些标准的 LINQ 函数(GroupBy
和 ToDictionary
),并且它在 个月 的时间内没有任何变化。不幸的是,我无法创建任何 MRE:显然,此错误仅出现在我的大型解决方案的上下文中,并且仅在可能不相关的地方进行了一些特定更改。
这是我尝试过的方法,但没有用:
- 清理 + 重建
- 将目标框架从 .NET 4.5 更改为 .NET 4.5.1 或 .NET 4.0
有没有人见过这样的怪癖?
检查项目中的所有(核心 .net)引用是否有效,并且它们都引用相同的 .NET Framework 版本。
如有疑问,请删除所有引用并重新添加(使用 4.0.0.0)版本。
我遇到过一次这种情况(出现完全相同的错误),这是由于参考文献版本中的一些 "screw up"。我从来没有找出它发生的原因,但删除所有引用并再次添加它们对我有用。
我有同样的问题,但它是在一个网站项目上 - 没有任何简单的方法来删除和重新添加引用。幸运的是,我发现这个答案对我有用——甚至比乱用参考文献还要快
adding a new assembly tag to web.config seems to have resolved this
issue. The tag I added was under the tag and as follows:
<assemblies>
<add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
我遇到了完全相同的问题,它似乎与包含相同程序集的两个 NuGet 包有关 "System.Collections.Immutable"。 "Microsoft.Bcl.Immutable"(未列出)和 "System.Collections.Immutable".
的两个 NuGet 包
我无法可靠地重现该问题,看来问题已通过使用 VS2015 解决。
但是,我建议寻找包含相同程序集的 NuGet 包。
删除 Microsoft.Bcl.Immutables 为我解决了这个问题。
我以某种方式将我的项目带到了 Visual Studio 2013 无法编译它并出现荒谬错误的状态:
The type 'System.Collections.Generic.Dictionary`2' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
首先,没有这样的程序集,它不存在。
其次,Dictionary<TKey, TValue>
定义在mscorlib.dll
中,当然是默认引用的。 Resharper(它有自己的代码分析引擎)报告解决方案应该可以正常编译。
我不知道它到底是怎么发生的,因为我最近的更改与所谓的错误地方完全无关。该行引用了一些标准的 LINQ 函数(GroupBy
和 ToDictionary
),并且它在 个月 的时间内没有任何变化。不幸的是,我无法创建任何 MRE:显然,此错误仅出现在我的大型解决方案的上下文中,并且仅在可能不相关的地方进行了一些特定更改。
这是我尝试过的方法,但没有用:
- 清理 + 重建
- 将目标框架从 .NET 4.5 更改为 .NET 4.5.1 或 .NET 4.0
有没有人见过这样的怪癖?
检查项目中的所有(核心 .net)引用是否有效,并且它们都引用相同的 .NET Framework 版本。
如有疑问,请删除所有引用并重新添加(使用 4.0.0.0)版本。
我遇到过一次这种情况(出现完全相同的错误),这是由于参考文献版本中的一些 "screw up"。我从来没有找出它发生的原因,但删除所有引用并再次添加它们对我有用。
我有同样的问题,但它是在一个网站项目上 - 没有任何简单的方法来删除和重新添加引用。幸运的是,我发现这个答案对我有用——甚至比乱用参考文献还要快
adding a new assembly tag to web.config seems to have resolved this issue. The tag I added was under the tag and as follows:
<assemblies>
<add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
我遇到了完全相同的问题,它似乎与包含相同程序集的两个 NuGet 包有关 "System.Collections.Immutable"。 "Microsoft.Bcl.Immutable"(未列出)和 "System.Collections.Immutable".
的两个 NuGet 包我无法可靠地重现该问题,看来问题已通过使用 VS2015 解决。
但是,我建议寻找包含相同程序集的 NuGet 包。
删除 Microsoft.Bcl.Immutables 为我解决了这个问题。