71

我有 3 个项目的解决方案:

  • ParsersBase,定义一个接口IParseRule
  • ParsersLibrary,具有对 ParsersBase 的引用并定义一个类 HtmlImageUrlParseRule :IParseRule
  • ParsersLibraryTest,引用 ParsersBase 和 ParsersLibrary 并使用一些测试方法定义测试类

当我尝试构建它时,我收到一个警告:

对“AVSoft.ParsersBase.IParseRule”类型的引用声称它在“c:\Users\Tim\Dropbox\projects\Image Downloader\ParsersLibrary\bin\Debug\ParsersLibrary.dll”中定义,但找不到

为什么 VS 试图AVSoft.ParsersBase.IParseRule在 ParsersLibrary.dll 中查找?ParsersLibraryTest 有对 ParsersBase 的引用,它只是没有任何意义。

4

18 回答 18

31

这个错误似乎涵盖了各种场景。就我而言,关闭并重新打开 Visual Studio 是诀窍。重新启动 Visual Studio 后,我能够按预期构建项目。

于 2017-05-10T01:08:23.323 回答
23

另一种可能发生这种情况的方式是,如果您使用多个 NuGet 包,其中一个(可能是中央)包已更新,但某些附加功能包尚未更新。

要完成我最近的示例-错误是“对类型'ConsumerSubscriptionConfigurator<>'的引用声称它是在'MassTransit'中定义的,但找不到它”。这是因为我们将MassTransit从 2 更新到 3,但我们没有将其他一些可选包(MassTransit.log4netMassTransit.Autofac)更新到相同的版本号。在我们尝试使用更多附加功能之前,似乎程序集重定向一直保持一切正常。

于 2016-11-02T16:48:58.540 回答
16

我有一个类似的问题。该站点正在运行 dll 的缓存版本,而不是我部署到 bin 目录的那个。我清除了临时 asp.net 文件夹内容,这解决了问题。

于 2014-02-25T14:16:01.957 回答
15

这是我的错,我一开始有一个ParsersLibrary项目,然后将其重命名为ParsersBase,但我没有重命名程序集名称,然后我又添加了一个ParsersLibrary项目。

所以,两个项目有相同的程序集名称,这不是很好,是吗?:) 程序集相互重叠,所以我有这个错误。

于 2013-10-20T08:48:26.953 回答
6

我遇到了类似的问题:对“Func<>”类型的引用声称它是在“mscorlib”中定义的,但找不到。问题如下:我的解决方案有 Target Framework = 3.5,我添加了对 Microsoft.Practices.Prism v 4.0 的引用,它是针对框架 4.0 构建的。

将目标框架更改为 4.0 后,它起作用了

于 2018-05-29T11:13:03.983 回答
3

我的情况是,我尝试使用无法引用所需 WindowsBase.dll 的 .NET Core (3.1) 测试项目来测试 WPF 项目。

于 2020-05-19T19:27:56.550 回答
3

我今天遇到了这个异常。我的问题是我已经some.package v2.1安装在我的主机中并some.package v2.3安装在其他项目中。Update-Package在宿主项目上v2.3解决问题。

于 2016-03-01T00:25:24.677 回答
2

看起来现在事情比以前容易了一些。

正如其他答案基本上已经说明的那样,此错误可能是由于同一 NuGet 包的旧版本没有一些较新的类型。在生产中,这通常是通过适当的版本控制来管理的,在开发中,您可能最终在进行更改时重用相同的版本号。这就是可能出现这个问题的地方。

要解决此问题,您通常可以通过执行以下操作来清除缓存:

  1. 在 Visual Studio 中,转到Tools > NuGet Package Manager > Package Manager Settings.
  2. 在弹出菜单中,导航到NuGet Package Manager > General
  3. 在右侧的选项中,单击Clear All NuGet Cache(s)
于 2020-10-09T21:57:11.770 回答
1

@binki 的评论帮助了我;

删除所有 .vs、bin 和 obj 文件夹,然后重新打开项目

于 2020-05-27T10:49:25.533 回答
1

更新/整合包没有帮助。即使是一个干净的 repo 和 Visual Studio 的重新启动也没有为我解决它。

但是重启确实解决了问题!

于 2019-11-04T20:04:24.020 回答
0

ParsersLibraryTest 需要引用 ParsersBase。错误的第二部分应为“您必须添加对程序集 'ParsersBase... 的引用”

于 2013-10-19T19:23:42.387 回答
0

我刚刚为这个错误苦苦挣扎了一段时间,终于解决了它。这是如何重新制作它以及我如何修复它。

问题是:右键单击 -> 添加引用 -> 浏览(选择)引用了这些包。然后再次作为 NuGet 包添加。

解决方案是:

  • 删除添加的引用。
  • 从 .csproj 中删除已安装的软件包。
  • 从 NuGet 包管理器重新安装所需的包。
  • 关闭 Visual Studio 并重新打开它。
  • 清洁项目。
  • 构建项目。

注意:如果您无法删除引用的文件(右键单击没有删除选项),请尝试关闭 Visual Studio 并重新打开它。或者删除或移动引用的dll,然后重试。

于 2019-10-23T10:59:48.397 回答
0

我遇到了类似的问题:对“Func<>”类型的引用声称它是在“mscorlib”中定义的,但找不到。我有一个由 .Net 3.5 程序引用的 .Net 4 库。将两者都升级到 4.61 后,它可以工作了。

.Net 3.5 中似乎Func<T>缺少,只需升级该示例应用程序就足够了。

进一步的 exp:有人在使用 Func<T>参数的库项目(.Net 4)中添加了一个签名。但是示例程序(3.5)已经存在并且到目前为止运行良好。但是在重新编译时,依赖项的依赖项发生了冲突。因为已经加载了 mscorelib-3.5。一切都发生在编译时。

于 2019-02-21T09:16:54.120 回答
0

对我来说,我选择了不正确的项目,我正在创建一个类库项目,我不得不选择“类库(.Net 框架)”,但我选择了“类库(.Net 标准)”

更换同样解决了这个问题。

于 2020-07-31T09:44:05.927 回答
0

我可以克服此错误的唯一方法是强制卸载所有相关的 nuget 包,然后重新安装它们。悲伤但真实。

于 2019-07-31T13:47:59.430 回答
0

问题如下:我的解决方案有 Target Framework = 3.1,我添加了对 Microsoft.EntityFrameworkCore.SqlServer v 2.0 的引用,它是针对 framework 构建的。

于 2021-03-13T01:38:03.800 回答
0

我尝试了上述所有答案,但都没有解决我的问题。

最后,我签入了我的最新代码 (GIT),然后将存储库重新克隆到了不同的位置。

不理想,但至少问题解决了。

于 2018-06-10T15:50:18.287 回答
0

在我从 .NET Framework 切换到 .NET Standard 之后,我在解决方案中的一个库项目遇到了这个问题。最终,我只是删除了项目引用并将其再次添加到报告问题的应用程序项目中。奇怪的是,唯一改变的是项目 GUID 从以前的大写切换到小写。

于 2021-10-25T09:12:11.827 回答