试图将一些代码从一个工作项目拼接到另一个工作项目。 “from”项目使用“属性路由”,您可以在Web API控制器模块中嵌入[Route(…)]
指令,以指示HTTP消息应路由到哪个服务例程。
在“from”项目中正常工作,但在“to”项目中我得到构建错误“找不到类型或命名空间名称'Route'(你是否缺少using指令或程序集引用?) “
我已经尝试将“from”项目中的所有using
语句复制到“to”项目,但这没有明显的效果。没有MS文档表明需要NuGet包(甚至是using
语句)。这两个项目都应该是ASP.NET MVC 4。
(是的,我用config.MapHttpAttributeRoutes();
语句更新了WebApiConfig.cs。)
任何想法??
答案 0 :(得分:28)
VedranMandić的评论为我解决了这个问题。我在这里重新发布它是因为我认为它应该是答案(或者至少是一个答案)。
我做了'Update-Package Microsoft.AspNet.WebApi.WebHost -reinstall' 它起作用了。搞笑这是在获得最新版本后发生的 来自TFS的不同PC。我猜这是因为nuget包 与版本控制系统无法正常工作
答案 1 :(得分:16)
属性路由在ASP.NET MVC 5或更高版本以及ASP.NET Web API 2中是本机的。
但是,有一个project that allows to use attribute routing it in previous version of ASP.NET MVC,and Web API。您应该仔细阅读本页。
正如您在链接页面中看到的那样,这个项目可以作为NuGet包使用,因此它可以像这样安装:
Install-Package AttributeRouting
(适用于MVC)Install-Package AttributeRouting.WebApi
(适用于Web API)Install-Package AttributeRouting.WebApi.Hosted
(适用于自托管的Web API)请注意,属性路由的名称空间对于每个版本以及MVC和Web API都是不同的。因此,您必须浏览已安装软件包中包含的.dll以找到正确的名称空间,并相应地更改using
。例如:
using AttributeRouting.Web.Http;
答案 2 :(得分:5)
就我而言,在web api项目中有两个使用引用:
using System.Web.Http;
using System.Web.Mvc;
我删除System.Web.Mvc
后,错误就消失了。
答案 3 :(得分:0)
在多个解决方案之间共享项目时,必须在解决方案相关路径中手动在 .csproj 中配置使用 Nuget 下载的库的引用。
例如,log4net应配置为:
<Reference Include="log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>$(SolutionDir)\packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
<Private>True</Private>
</Reference>