4
votes

project.assets.json introuvable avec msbuild

J'ai une application ASP.NET Core que je souhaite construire sur une machine jenkins avec MSBuild 15.

Lorsque j'essaye de construire, j'obtiens l'erreur suivante:

C: \ Program Files \ dotnet \ sdk \ 2.1.502 \ Sdks \ Microsoft.NET.Sdk \ cibles \ Microsoft.PackageDependencyResolution.targets (198, 5): erreur NETSDK1004: fichier d'actifs 'C: \ sync \ Src \ Util \ myUtil \ ob j \ project.assets.json 'introuvable. Exécutez une restauration de package NuGet pour générer ce fichier

Je comprends que je dois faire une restauration de nuget d'une manière ou d'une autre, mais je n'ai pas réussi à le faire fonctionner.

Mon processus de construction: Exécution d'un lot classé avec la commande suivante:

<Target Name="Restore">
  <MSBuild Projects="$(SourcesPath)\my.sln" Targets="Restore" />
</Target>

Le fichier DailyBuild.proj ressemble à ceci:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <SourcesPath>$(MSBuildProjectDirectory)\..\..\</SourcesPath>
    <CSCleanProperties>BuildType=Clean;Configuration=Release;IsFormalBuild=true</CSCleanProperties>
    <CSBuildProperties>BuildType=ReBuild;Configuration=Release;PauseBuildOnError=false;PublishWebSites=true;VersionName=myProd-$(VersionNumber)</CSBuildProperties>
  </PropertyGroup>

  <Target Name="DailyBuildWithClean">
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Targets="Clean" Properties="$(CSCleanProperties)"/>
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Properties="$(CSCleanProperties)"/>
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Targets="FormalBuild" Properties="$(CSBuildProperties)"/>
  </Target>

  <Target Name="DailyBuild">
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Targets="SW;PreparePackFolder" Properties="$(CSBuildProperties)"/>
  </Target>

</Project>

The Make .proj est un fichier proj contenant des définitions pour de nombreuses applications à construire, l'une d'elles est mon application ASP.NET Core.

Comment résoudre ce problème? merci.

SOLUTION EDIT: Grâce à la solution de Martin Ullrich:

Ajouté dans le DailyBuild.proj la cible Restore, également ajoutée dans le Make.proj une cible appelée restore comme suggéré (IE:

call "%VS150COMNTOOLS%VsDevCmd.bat"
MSBuild DailyBuild.proj /t:DailyBuild /p:VersionNumber=%2 /l:FileLogger,Microsoft.Build.Engine;logfile=Build.log

)


5 commentaires

Copie possible du fichier d'actifs project.assets .json introuvable. Exécuter une restauration de package NuGet


J'ai vu cela mais cela ne m'aide pas. Im essayant de construire avec MSBuild (spécifiquement avec une machine de construction) pas avec dotnet donc la restauration dotnet ne m'aide pas. Sauf si vous avez quelque chose de plus à ajouter car cette réponse ne m'aide pas


Si vous comptez utiliser .net core, vous devez suivre les règles du SDK. Je vous recommande de vous débarrasser des fichiers .proj et de l'opération msbuild et d'utiliser dotnet CLI et Cake comme outil de construction.


Je ne trouve pas la commande restore . Ai-je oublié quelque chose?


Je n'ai pas inclus la commande de restauration parce que quelle que soit la manière dont j'ai essayé, cela ne fonctionnait pas (msbuild -t: restore ou msbuild / t: restore toujours conduit à restaurer la cible non trouvée)


3 Réponses :


9
votes

Ajoutez -r ( -restore / / Restore ) à votre commande MSBuild pour déclencher une restauration avant la construction principale.

Le paramètre de restauration construira la cible Restore , effacera les caches internes, puis exécutera le reste de la construction comme spécifié.

Puisque vous créez un projet MSBuild personnalisé, vous devez ensuite ajouter une cible Restore sur celle-ci:

<Target Name="Restore">
  <MSBuild Projects="$(SourcesPath)\my.sln" Targets="Restore" />
</Target>

(ou bien ajoutez une autre cible Restore sur le fichier make.proj et transférez-la de là à la solution ou aux projets individuels que vous devez restaurer)


1 commentaires

Merci c'est ce que je cherchais



1
votes

Soyez prudent en utilisant les packages Restore Nuget directement dans la configuration de la tâche de build MS. Cette option est obsolète, comme indiqué ici pour Azure DevOps. (Cependant, je ne sais pas à quel point cela dépend du contexte.)

(Important) Cette option est obsolète. Assurez-vous de décocher cette case et utilisez plutôt le NuGet Installer étape de construction.

Lien source: MSBuild < / p>

Cependant, j'ai déjà utilisé cette étape (dans TFS), donc cela ne résoudrait évidemment pas le problème pour moi.

J'ai essayé de supprimer le dossier packages dans l'explorateur de contrôle de code source comme mentionné ici , mais cela ne l'a pas résolu non plus.

Inspiré par ceci , je mis à niveau l'étape de construction du programme d'installation de TFS NuGet pour utiliser Nuget 4.0 (dans les options "Avancées"), et cela l'a corrigé. (Peut-être en combinaison avec la suppression du dossier packages?)


0 commentaires

0
votes

Reconstruisez simplement votre projet dans un autre emplacement (répertoire / dossier) et exécutez votre solution, cela fonctionne à 100%.


0 commentaires