首页 文章

为什么我不能引用我的类库?

提问于
浏览
80

我有一个解决方案,包含Visual Studio 2008中的网站和类库 .

然后我在解决方案之外有另一个需要引用类库的网站项目 . 我右键单击Bin文件夹或Project并选择Add Reference,然后选择我的类库项目,它将类库所需的15个左右的DLL添加到网站bin文件夹,但没有.cs文件识别using语句 .

using MyLibrary.MyFolder;

它说它无法解决它,ReSharper只是说它可以被安全删除,因为它没有被使用 .

ReSharper可以识别它需要引用并建议它“引用MyLibrary并使用MyFolder” . 我不确定为什么它建议我添加一个我已有的参考 . 当我提出建议时,我得到了错误

“无法引用模块 . 可能参考将在项目之间产生循环依赖关系 . ”

我已经尝试进入网站属性页面并删除所有引用并重新添加它们,但它给出了相同的错误 . 任何想法为什么这不起作用?

18 回答

  • 2

    另一个可能对我有用的修复:

    如果你有引用程序集B的程序集A,它们都引用了非项目(外部)程序集X,而程序集B的代码将无法识别你引用了X,那么按顺序尝试以下步骤:

    • 从A和B中删除对X的引用

    • 在B中重新创建对X的引用

    • 在A中重新创建对X的引用

    显然,VS将无法识别项目中对外部程序集的引用,该项目是已引用外部项目的另一个项目的依赖项 . 通过从头开始再次设置参考,您可以克服这个问题 . 这很奇怪 .

  • 0

    此外,检查新解决方案的项目是否针对您尝试包含的项目的兼容框架运行 . 我试图在3.5项目中包含对4.0项目的引用 .

  • 145

    我删除了项目的* .csproj.user(resharper文件),然后关闭所有选项卡并重新打开它 . 之后,我能够编译我的项目,并没有resharper警告 .

  • 2

    我找到了如何解决这个问题(至少对我而言) . 为什么它有效,我不确定,但确实如此 . (我刚刚尝试了第二个有相同问题的网站,以下解决方案也适用于此) .

    我尝试正常清理项目并重建,关闭所有Visual Studio实例并重新启动它们,甚至尝试重新启动计算机 .

    实际工作的是在Visual Studio中打开项目,关闭所有打开的选项卡,然后关闭它 .

    在我打开标签之前,因为我认为它不重要(我几乎没有关闭我正在使用的标签) .

  • 4

    我有一个类似的问题,我的所有引用都会被Resharper错过了 - 对我有用的解决方案是清除Resharper Cache然后重新启动VS

    tools-> options-> resharper-> options-> general->单击clear caches按钮并重新启动VS.

  • -1

    不幸的是,唯一对我有用的是完全删除并重新创建类库项目,之后将类文件临时复制到其他地方 . 只有这样,ASP.Net Web项目才能识别引用类库项目的 using 语句 . 这是使用Visual Studio 2010,而不是使用ReSharper .

  • 8

    我最近偶然发现了类似的问题 . 我正在使用Resharper Ultimate 2016.1.2在Visual Studio 2015中工作 . 我试图在我的代码库中添加一个新类,同时尝试从另一个程序集引用一个类,但Resharper会为该包抛出一个错误 .

    在同事的帮助下,我发现引用的类存在于全局命名空间中,并且无法从新类访问,因为它被当前命名空间中存在的另一个同名实体隐藏 .

    在所需的命名空间之前添加'global ::'关键字有助于我引用我实际上正在寻找的类 . 有关这方面的更多详细信息,请参见下面的页面:

    https://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx

  • -1

    由于它们都在同一个解决方案中,而不是添加对DLL的引用,因此添加对类库项目本身的引用(“添加引用”对话框将有一个选项卡) .

    啊,这是一个不同的解决方案 . 错过了 . 如何尝试而不是添加对项目的引用添加对类库的已编译DLL的引用 . “添加引用”对话框有一个“浏览”选项卡,可以执

  • 3

    我遇到了这个问题,我通过关闭视觉工作室,重新打开视觉工作室,清理和重建解决方案来解决这个问题 . 这对我有用 .

  • 0

    如果使用TFS,则执行Get latest(递归)并不总是有效 . 相反,我通过单击Source control =>获取特定版本然后单击这两个框来强制获取最新信息 . 这往往有效 .

    enter image description here

    如果它仍然不起作用,则删除suo文件(通常发现在与解决方案相同的地方)迫使visual studio从源获取所有文件(并随后重建suo文件) .

    如果这不起作用,请尝试关闭所有打开的文件并关闭Visual Studio . 下次打开Visual studio时,应该修复它 . 有一个resharper bug以这种方式解决 .

  • 0

    这听起来与ReSharper类似的问题:

    http://www.jetbrains.net/devnet/thread/275827

    根据线程中的一个用户强制构建修复了第一次构建后的问题(CTRL Shift B) .

    听起来像ReSharper特别在他们的情况下的问题..你是否尝试 Build 无论警告和可能的错误错误?

  • 2

    我有类似的问题 . 对我有用的是我添加了 wrong Class Library from visual studio . 我通过使用visual studio的搜索功能添加了 .

    我需要做的是 Add New Project > Visual C# > Class Library . 这个新添加的类库是正确的,现在可以添加为任何项目的参考 .

  • -3

    您可能忘记了 add reference 您需要导入的类库 .

    右键单击要导入的类库(包含多个导入的类库), - > Add-> Reference(选择Projects-> Solution->选择要导入的类库 - > OK)

  • 0

    我有一个类似的问题,VS有时会 Build ,有时不会 . 经过一些搜索和尝试后,我发现我对不同库中的同名类('FileManager')有一个模糊的引用 . 不构建的项目是我的单元测试,它引用了我的解决方案中的所有模块 . 执行对特定模块的引用可以为我排序 .

    我的观点是:不要谴责ReSharper或VS,最好仔细检查一下是否真的没有某种循环引用 . 更常见的是,不同模块中具有相同名称的类可能会引起混淆,并且通常是设计不良的症状(就像我的情况一样) .

  • 0

    一种可能性是类库的目标.NET Framework版本高于项目的.NET Framework版本 .

  • 30

    如果您正在引用同一解决方案中的项目的程序集,请添加项目引用(使用“项目”选项卡),而不是在\ bin \ Debug(或\ bin \ Release)文件夹中浏览dll(使用“浏览”标签) . 见下面的屏幕截图 . 如果它被认为是外部程序集,则仅浏览程序集/ dll文件 .

    enter image description here

  • 2

    在为MVC 2应用程序创建测试项目时,我在VS 2010中遇到了类似的问题 . 症状相同 .

    来自ReSharper的消息有些误导 . 有那么一刻,我完全忽略了ReSharper并做了“手动VS方式”:

    • 我清理了解决方案 .

    • 我手动添加了对MVC项目的引用 .

    • 我手动添加了using指令 .

    • ctrl-shift-b

    在这个阶段我得到了一个编译错误:我应该在我的测试项目中引用 System.Web.Mvc 程序集(叹气) . 添加此引用会导致项目编译 . ReSharper问题仍然存在,但ReSharper测试运行器仍在运行 .

    当我重新启动VS时,ReSharper错误也消失了 . 我不确定是否需要重启 - 只需关闭.cs文件即可 .

    从现在开始,当我看到ReSharper消息时

    参考模块失败 . 可能,引用将在项目之间产生循环依赖关系 .

    我会读的

    参考模块失败 . 可能,引用将在项目之间产生循环依赖关系,或者您缺少对引用依赖项的依赖关系的一些引用 .

  • 81

    我有这个问题 . 我花了很长时间才弄明白 . 我有人帮助我 . 我们重建,清理并重新启动Visual Studio,但这并没有解决它 . 我们删除并重新添加了引用...

    一切都无济于事......直到!

    我的问题的解决方案是 my class declaration was spelt incorrectly.

    在你开始严厉地评判我之前,请允许我解释为什么它不是愚蠢的,以及为什么即使是最聪明的程序员也可能犯这个错误 .

    由于错误是在名称的早期,因此当我开始输入时,它没有出现在intellisense类列表中 .

    例如

    class 名称: Message.cs

    宣言:

    public class Massage
    {
        //code here
    
    }
    

    按摩和小字体,按摩看起来与消息相同 .

    键入M列出了太多的类,所以我键入了e,它没有出现在错误的版本中,这给人的印象是编译器没有选择该类 .

相关问题