如何解决ReSharper对类继承的错误“不明确的引用”?

时间:2008-10-10 15:44:58

标签: resharper

在我的项目中,我有一个由许多其他类继承的类。我们称之为ClassBase。

public class ClassInheritFromBase : ClassBase

当继承ClassBase时,ReSharper会在ClassBase上抛出“不明确的引用”警告,并且继承自ClassBase的新类中的任何内容都没有IntelliSense,并且会收到无法找到它的警告。

该项目编译并运行良好。

如果我更改了ClassBase所在的命名空间,然后更改了继承类,他们发现它很好并且ReSharper没有问题,IntelliSense可以工作......直到它被编译。在编译之后,它会回到模糊的引用警告和其他所有内容。

之前是否已经看过这种情况,如何解决?我在JetBrains中看到了一个跟踪问题的条目就像这样,但是他们因为无法重现而将其关闭。

13 个答案:

答案 0 :(得分:14)

对于那些仍然有问题的人,(我仍然不时地得到它)这里是我在ReSharper中摆脱模棱两可的参考警告所采取的步骤。

  1. 首先,我访问了所有类库,并确保对其他类库的所有引用都将 Copy Local 属性设置为false。
  2. 在我实际收到模糊引用警告的项目中,我访问了我的bin目录并删除了所有拥有自己项目的库的.dll和.pdb文件。
  3. 在新版本之后,或者在VS中的.dll文件的“更新参考”中,来自Resharper的错误消失了。
  4. 我在Visual Studio 2008中使用Resharper 5.1只引用了我正在使用的dll,这就是为什么我必须“更新引用”

答案 1 :(得分:5)

我使用的是VS 2012和ReSharper 7,有时我发现了相同的行为。这些步骤对我有用:

  1. 清洁解决方案
  2. 关闭Visual Studio
  3. 转到解决方案的根文件夹,找到名为_ReSharper的文件夹。[解决方案的名称]并将其删除。
  4. 返回Visual Studio,打开您的解决方案,重新创建文件夹,不再需要"模糊参考"之后的错误。

答案 2 :(得分:3)

我在ReSharper 4.1中看到过这个错误。它发生在基类位于App_Code目录中时。我不知道如何解决它;它非常烦人,但代码仍在编译中。

答案 3 :(得分:2)

这是ReSharper 4.1中的一个错误,并在之后的每晚版本中修复。

下载最后一夜的版本 http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds

答案 4 :(得分:1)

ReSharper - >选项 - >常规:单击#Clear Caches#按钮。

答案 5 :(得分:1)

对我而言,我不使用解决方案文件夹进行缓存。将它从TEMP位置更改为解决方案解决了我的问题。

答案 6 :(得分:1)

我删除了在我的解决方案的根目录中找到的_ReSharper.SolutionName文件夹并重新启动。

我正在使用带有ReSharper 5.1的Visual Studio 2010 ...清除缓存 DID NOT 帮助(ReSharper - &gt;菜单选项 - &gt; 常规< / em> - &gt; #Clear Cache#)。

答案 7 :(得分:1)

你可能真的有一个模棱两可的参考。在出现模糊引用错误的项目中,请务必检查项目引用。您可能有两次相同的引用,但是通过不同的命名空间作用域。在我的情况下,有两个,但有不同的路径(例子):

XXX.YYY.ZZZ.myassembly
ZZZ.myassembly

确保您的参考文献中没有此类内容。

答案 8 :(得分:0)

我遇到了同样的问题。我遇到的问题是由自定义构建提供程序(来自我使用的名为PageMethods的开源库)以及所有我的.aspx页面都从位于App_Code文件夹中的BasePage类继承而引起的。 / p>

我无法使用任何ReSharper版本来处理我的项目(4.1.933,4.1.943(最新)或4.5)。最新的ReSharper构建中的修复修复了“模糊参考”问题,但打破了自定义构建提供程序。

我可以让构建提供程序和基类与ReSharper一起使用的唯一方法是将基类放入一个单独的类库中。

以下是与此问题相关的已记录的Jira错误:

答案 9 :(得分:0)

我在AppCode文件夹中引用了C#类时遇到了同样的问题。

我通过将ReSharper升级到4.5版(从4.1版开始)解决了这个问题。

这是一个非常简单的升级,我只需从JetBrains网站(http://www.jetbrains.com/resharper/download/)获取最新版本并运行它。

我没有必要卸载以前的版本(v4.1)。 我没有必要重新输入现有的许可证密钥。

现在可以正确识别所有引用,我可以按预期导航到类。

答案 10 :(得分:0)

我遇到了与ReSharper 5.1相同的问题,并通过重新启动Visual Studio 2010解决了这个问题。

答案 11 :(得分:0)

使用VS 2013 Premium&amp; Resharper 8.1,并且在ASP.Net项目中遇到了这个问题。

对我有用的解决方案:

  1. 做一个干净的解决方案。
  2. 打开违规项目的参考资料
  3. 在引用解决方案中其他项目的每个引用上,设置Copy Local = false
  4. 尝试重建解决方案。您可能会得到未解决的参考错误 - 这是正常的。
  5. 将每个参考设置回Copy Local = true(适用时)

答案 12 :(得分:0)

使用R#2019.2.3并使用新的SDK .csproj格式(可在.NET引用,NUGET包和项目依赖项之间拆分引用)的情况下,R#仍倾向于在“程序集”下添加项目引用,甚至当依赖项下已经有项目引用时。这会导致歧义错误,但由于引用位于两个单独的位置,因此可能很难注意到。查找出现在“程序集”下的所有项目引用,然后将其删除。