Azure DevOps Build缺少程序集参考

时间:2019-05-17 16:34:52

标签: c# visual-studio msbuild azure-devops

我在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,则会进行编译。

我尝试解决的步骤:

  • 确保在我的项目的NuGet中,我有最新的Microsoft.Aspnet.MVC vesrion。
  • 我尝试在该版本上重新安装Microsoft.Aspnet.MVC
    通过NuGet
  • 我验证了我项目的默认软件包
    管理格式为:Packages.config
  • 我验证了我的 packages.config具有
  • 我尝试重新安装所有 通过运行Update-Package在我的构建机器上打包 --reinstall命令。
  • 我确认在构建代理机器上,我有Microsoft.AspNet.Mvc文件夹及其所有dll在repositoryPath下-
    $(Solutiondir)/ packages和globalPackagesFolder-
    $(UserProfile).nuget \ packages

我对为什么要在Visual Studio上手动编译却一无所知,但是当我通过x64位的MS Build使用生成代理进行编译时却出错了。

1 个答案:

答案 0 :(得分:1)

我试图通过比较两个新的ASP.NET Web应用程序(.NET Framework)项目来重现您的错误,一个项目使用空模板创建,另一个项目使用MVC模板。 MVC项目带有System.Web.Mvc引用,而空引用则没有,因此在手动将引用添加到空项目时,我提出了其他疑难解答步骤。

  • 确保无法构建的项目文件包含对Microsoft.AspNet.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并删除所有binobj文件夹,以确保您的构建由于先前的版本而没有成功,并且Visual Studio不会重新生成它们。

  • p>
  • 使用开发人员命令提示符在项目文件夹中调用msbuild.exe,与使用Visual Studio进行构建相比,这与构建管道的环境更为相似