我在Azure DevOps上有一个构建过程,该过程已经成功构建了一段时间。
最近我的一位开发人员添加了一个包含MVC库的页面
using System.Web.Mvc
但是,作为CI / CD流程的一部分,当我通过Azure DevOps构建代理进行构建时,该构建现在一直失败。
ClassName.cs(5,18):错误CS0234:类型或名称空间名称'Mvc'在名称空间'System.Web'中不存在(您是否缺少程序集引用?)
如果我在自己的笔记本电脑上使用Visual Studio 2017手动编译,或者在运行Azure DevOps构建代理的构建计算机上使用Visual Studio 2017,则会进行编译。
我尝试解决的步骤:
我对为什么要在Visual Studio上手动编译却一无所知,但是当我通过x64位的MS Build使用生成代理进行编译时却出错了。
答案 0 :(得分:1)
我试图通过比较两个新的ASP.NET Web应用程序(.NET Framework)项目来重现您的错误,一个项目使用空模板创建,另一个项目使用MVC模板。 MVC项目带有System.Web.Mvc引用,而空引用则没有,因此在手动将引用添加到空项目时,我提出了其他疑难解答步骤。
<Reference Include="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.4\lib\net45\System.Web.Mvc.dll</HintPath>
</Reference>
您可以从一个新创建的MVC模板中复制它和它。隐式引用<Reference Include="System.Web.Mvc" />
仅在生成构建工件之前才起作用,这可能是构建成功进行开发并在构建管道中失败的良好原因。
清洁解决方案,关闭Visual Studio并删除所有bin
和obj
文件夹,以确保您的构建由于先前的版本而没有成功,并且Visual Studio不会重新生成它们。
使用开发人员命令提示符在项目文件夹中调用msbuild.exe
,与使用Visual Studio进行构建相比,这与构建管道的环境更为相似