C# 找不到类型或命名空间IAppBuilder(缺少使用指令pr和程序集引用)
我正在开发一个Asp.NETMVC4应用程序,在该应用程序中我使用Signalr2.0.1,并使用Owin启动类对其进行了映射,它最初运行良好 突然,当我试图重建我的应用程序时,它说找不到类型为namespaceC# 找不到类型或命名空间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
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
)强制卸载,即使存在依赖项
- 清理和重建项目/解决方案
- 重新启动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;