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

我在研究阿斯珀。Net MVC 4应用程序,其中我使用 SignalR 2.0.1,并使用 Owin Startup 类映射它,它起初工作得很好。

突然,当我试图重建我的应用程序,它说,类型是名称空间 IAppbuilder无法找到。

以下是我的启动课程

using Microsoft.Owin;
using Owin;
using WhiteBoardApp;


namespace WhiteBoardApp
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}

我也安装了 Owin软件包,由于某些原因我找不到 Owin Startup 类,所以我只是添加了一个普通类,并包含了所有需要的引用。 请问我在哪里犯了一个错误

66658 次浏览

尝试使用包管理控制台并执行

Update-Package Owin -Reinstall

我在 F # 中使用的等效方法存在隐藏 IAppBuilder 的问题。事实证明,欧文规定被解释为一个不完整的系统。韦伯。哈哈。引用 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 # 编译器特有的 bug,而且名称冲突在 C # 和其他地方处理得更好。

我也遇到过类似的问题,但是问题是导致微软的问题

Update-Package Owin -Reinstall

没用,Update-Package Owin也没用

但是

Install-Package Microsoft.Owin

我觉得挺好的,谢谢。

IAppBuilder 接口位于 Owin 包下。只需在类文件中添加一个引用:

利用欧文;

然后重建,你的项目会接手的。

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

出于某种原因,我的 VisualStudio2013没有意识到引用路径的存在。所有新增的软件包都显示了参考文献前面的黄色叹号。我查过了。./package/但所有文件都存在,我还打开了。引用正确路径的 csproj 文件。

关闭和打开解决方案会返回相当多的错误,并且无法加载解决方案中包含的项目。

重新启动 VisualStudio2013出于某种原因挽救了局面。

Http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

检查您正在使用的视觉工作室 您可以找到以下注释

注意: 如果使用 VisualStudio2012,SignalRHub Class (v2)模板将不可用。您可以改为添加一个名为 ChatHub 的普通类。

还有 注意: 如果您使用的是 VisualStudio2012,则 OWINStartupClass 模板将不可用。您可以改为添加一个名为 Startup 的普通类。

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

  1. 转到 Solution Explorer并寻找您的项目
  2. 在您的项目下,展开 References; 您应该在有问题的引用上看到警告
  3. 右键单击 References并打开 Manage NuGet Packages
  4. 搜索问题引用的名称,即 Microsoft.Owin; 加载后,它显示已经安装(它是,但它安装不正确。在步骤2中检查 properties > version 显示 0.0.0.0)
  5. 检查 Force uninstall, even if there are dependencies on it
  6. 卸载
  7. 安装
  8. 生成并运行项目

问题

无法安装 Microsoft.Web.Infrastructure,因为它已经存在于包文件夹中。回滚..。

  1. 转到您的项目文件夹并查找包
  2. 找到问题包,即 Microsoft.Web.Infrastructure
  3. 删除文件夹
  4. 从第七步开始

替代品

以下是我读到的解决这类问题的备选方案。

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

祝你好运。

在我的例子中,我已经移动了项目文件夹和 vs 解决方案文件(。Sln).一旦我完成了重新添加项目,在解决方案级别有一个包文件夹,其中一个保留在项目子文件夹中。 这样,在那个项目中,. csproj 文件中的相对包文件夹链接被搞乱了。

在这个线程中,重新安装或其他有关 nuget 包管理器的提示很有帮助。我注意到,在我重新安装了一些包之后,在我的 git 源代码 diff 中,包文件夹的路径在 csproj 文件中被改变了。

之前

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

之后

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

所以,如果你运行在相同的问题,你有很多的 nuget 包,它可能更容易关闭整个解决方案,打开文本编辑器(如 vscode)中的 csproj 文件和修复搜索和替换的相关链接。然后在 VS 中保存、关闭、重新打开解决方案并恢复 nuget 包。这样应该可以了。 (在任何情况下,您都应该删除项目级别的本地包文件夹,这样,如果没有获得正确的包,项目就会真正失败。)

这是命令问题。

using Microsoft.Owin;
using Owin;

导致微软。首先定义 Owin,然后在已经导入的 Microsoft 名称空间下找到 Owin。如果你用鼠标在欧文的使用欧文你应该看到它已经解决了微软。再次使用 Owin,并且 IDE 将使用 Owin 作为冗余的未使用的引用。

做:

using global::Owin;

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