C# 找不到类型或命名空间IAppBuilder(缺少使用指令pr和程序集引用)

C# 找不到类型或命名空间IAppBuilder(缺少使用指令pr和程序集引用),c#,asp.net-mvc-4,signalr,owin,C#,Asp.net Mvc 4,Signalr,Owin,我正在开发一个Asp.NETMVC4应用程序,在该应用程序中我使用Signalr2.0.1,并使用Owin启动类对其进行了映射,它最初运行良好 突然,当我试图重建我的应用程序时,它说找不到类型为namespaceIAppbuilder 下面是我的入门课 using Microsoft.Owin; using Owin; using WhiteBoardApp; namespace WhiteBoardApp { public class Startup { pu

我正在开发一个Asp.NETMVC4应用程序,在该应用程序中我使用Signalr2.0.1,并使用Owin启动类对其进行了映射,它最初运行良好

突然,当我试图重建我的应用程序时,它说找不到类型为namespace
IAppbuilder

下面是我的入门课

using Microsoft.Owin;
using Owin;
using WhiteBoardApp;

namespace WhiteBoardApp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}
我也安装了
Owin
包,由于某些原因,我找不到Owin启动类,所以我只添加了一个普通类,并包含了所有需要的引用。
我可以知道我在哪里出错吗?

尝试使用软件包管理控制台并执行以下操作

Update-Package Owin -Reinstall

我下面在F#中使用的等效函数表示隐藏IAppBuilder的问题。事实证明,Owin规定被解释为不完整的System.Web.Http.Owin引用,即使提供Owin命名空间的Owin.dll被引用

open System.Net.Http
open System.Web.Http
open Microsoft.Owin
open Owin
通过如下方式重新安排使用,问题得以解决:

open Microsoft.Owin
open Owin
open System.Net.Http
open System.Web.Http

…当然,这可能是F#编译器特有的错误,在C#和其他地方名称冲突处理得更好。

我也遇到过类似的问题。但很明显,这个问题是由Microsoft.Owin引起的,而不是Owin

Update-Package Owin -Reinstall
不起作用,
更新包Owin

但是


对我来说效果不错,谢谢。

IAppBuilder界面位于Owin包下。只需在类文件中添加引用:

使用Owin

重建。您的项目将获取此信息


我不知道为什么VS没有捡到这个,但它没有。一旦我将此引用添加到我的项目中,那么一切都会就绪。

我的Visual Studio 2013由于某种原因没有意识到引用路径的存在。对于所有添加的包,引用前面都显示了黄色感叹号。我检查了../packages/但所有文件都存在,我还打开了引用正确路径的.csproj文件

关闭和打开解决方案返回了大量错误,无法加载解决方案中包含的项目

由于某些无法解释的原因,重新启动Visual Studio 2013挽救了这一天。

检查您正在使用的visual studio 你可以找到下面的评论

注意:如果您使用的是Visual Studio 2012,则信号集线器类(v2)模板将不可用。您可以添加一个名为ChatHub的普通类


注意:如果您使用的是Visual Studio 2012,则OWIN启动类模板将不可用。您可以添加一个名为Startup的普通类。

我在构建项目时遇到了同样的问题。以下是帮助解决我的问题的步骤:

  • 转到
    解决方案资源管理器
    ,查找您的项目
  • 在项目下,展开
    参考
    ;您应该在有问题的引用上看到警告
  • 右键单击
    References
    并打开
    managenumget包
  • 搜索有问题的引用的名称,即
    Microsoft.Owin
    ;加载后,它显示已安装(确实安装了,但安装不正确。在步骤2中检查属性>版本显示
    0.0.0
  • 选中
    强制卸载,即使存在依赖项
  • 卸载
  • 安装
  • 构建并运行项目
  • 问题 无法安装Microsoft.Web.Infrastructure,因为它已存在于packages文件夹中。正在回滚

  • 转到项目文件夹并查找包
  • 查找有问题的软件包,即Microsoft.Web.Infrastructure
  • 删除文件夹
  • 从第7步继续
  • 选择 以下是我读到的解决此类问题的备选方案

    • 清理和重建项目/解决方案
    • 重新启动Visual Studio
    • 重启电脑

    祝你好运。

    就我而言,我已经移动了项目文件夹和vs解决方案文件(.sln)的位置。在我完成重新添加项目后,在解决方案级别上有一个packages文件夹,一个留在项目子文件夹中。 这样,在该项目中,.csproj文件中的相对包文件夹链接就搞乱了

    此线程中有关nuget package manager的重新安装或其他提示非常有用。我注意到,在我重新安装了几个包之后,在我的git源代码diff中,包文件夹的路径在csproj文件中发生了更改

    之前

    <HintPath>packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
    
    packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll
    
    之后

    <HintPath>..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
    
    。\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll
    
    因此,如果您运行的是同一个问题,并且有很多nuget软件包,那么关闭整个解决方案、在vscode之类的文本编辑器中打开csproj文件并使用search and replace修复相关链接可能会更容易。然后在VS中保存、关闭、重新打开解决方案并恢复nuget包。这应该能奏效。
    (在任何情况下,您都应该删除项目级别上的“本地软件包”文件夹,这样,如果没有获得正确的软件包,项目就会真正失败。)

    这是一个订购问题

    using Microsoft.Owin;
    using Owin;
    
    首先定义Microsoft.Owin,然后在已导入的Microsoft命名空间下找到Owin。如果您将鼠标移到使用Owin的Owin上,您应该会看到它再次解析为Microsoft.Owin,而且IDE将使用Owin作为冗余的未使用引用而灰显

    做:


    这澄清了编译器不能在已定义的名称空间(例如Microsoft.namespace)下查找Owin。

    用户建议进行编辑以删除-Reinstall标志。也许值得解释一下这种区别。-Reinstall标志将导致NuGet重新应用已安装的包的相同版本。这就像是一次维修行动。一般来说,它已经在包中了
    using Microsoft.Owin;
    using Owin;
    
    using global::Owin;