2 votes

Référence d'assemblage manquante dans Azure DevOps Build

J'ai un processus de construction sur Azure DevOps que j'ai construit avec succès depuis un certain temps maintenant.

Récemment, un de mes développeurs a ajouté une page qui contient la bibliothèque MVC.

using System.Web.Mvc

Cependant, la construction continue d'échouer lorsque je la réalise via l'agent de construction Azure DevOps dans le cadre de notre processus CI/CD.

ClassName.cs(5,18) : Erreur CS0234 : Le nom de type ou d'espace de nom 'Mvc' n'existe pas dans l'espace de nom 'System.Web' (il vous manque une référence d'assemblage ?).

Il compile si je compile manuellement en utilisant Visual Studio 2017 sur mon propre ordinateur portable ou si j'utilise le Visual Studio 2017 sur la machine de construction où s'exécute l'agent de construction Azure DevOps.

Les étapes que j'ai essayées pour résoudre le problème :

  • S'assurer dans le NuGet de mon projet que j'ai la dernière version de Microsoft.Aspnet.MVC. vesrion.
  • J'ai essayé de réinstaller Microsoft.Aspnet.MVC sur la base de la construction.
    par l'intermédiaire de NuGet
  • J'ai vérifié le paquetage par défaut de mon projet
    Le format de gestion est : Packages.config
  • J'ai vérifié que mon packages.config a < package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
  • J'ai essayé de réinstaller tous les paquet sur ma machine de construction en exécutant la commande Update-Package --reinstall.
  • J'ai vérifié que sur la machine de l'agent de construction, j'ai le dossier Microsoft.AspNet.Mvc et toutes ses dlls sous repositoryPath -.
    $(Solutiondir)/packages et globalPackagesFolder -
    $(UserProfile).nuget \packages

Je suis à court d'idées sur la raison pour laquelle il compile sur Visual Studio manuellement mais a une erreur lorsque je compile en utilisant l'agent de construction à travers MS Build sur x64 bits.

2voto

J'ai essayé de reproduire votre bogue en comparant deux nouveaux projets d'application Web ASP.NET (.NET Framework), l'un créé avec un modèle vide et l'autre avec le modèle MVC. Le projet MVC est livré avec la référence System.Web.Mvc et le projet vide ne l'est pas. J'ai donc proposé des étapes supplémentaires de dépannage en ajoutant manuellement la référence au projet vide.

  • Assurez-vous que le fichier du projet qui ne parvient pas à se construire inclut une référence au paquet Microsoft.AspNet.Mvc qui inclut un chemin (utilisez votre dernière version).

    <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>

Vous pouvez le copier et l'utiliser à partir d'un modèle MVC nouvellement créé. Une référence implicite <Reference Include="System.Web.Mvc" /> ne fonctionnera que si des artefacts de construction ont été générés auparavant, ce qui pourrait être une bonne raison pour qu'une construction réussisse dans le développement et échoue dans le pipeline de construction.

  • Nettoyez la solution, fermez Visual Studio et supprimez toutes les données de la solution. bin y obj pour s'assurer que votre construction ne réussit pas à cause des précédentes et que Visual Studio ne les régénère pas.

  • Utilisez l'invite de commande du développeur pour appeler msbuild.exe dans le dossier du projet, ce sera un environnement plus proche de votre pipeline de construction que la construction avec Visual Studio.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X