J'essaie de construire un projet .net core 1.1 sur vsts. Le projet est développé dans vs2017 et utilise le csproj au lieu de project.json. J'ai essayé plusieurs options pour construire id sur vsts avec les agents hébergés (Windows et Linux).
j'ai essayé les étapes de construction suivantes
Visual studio build
Je suis prêt à utiliser vs 2017, mais je reçois un avertissement "Version de Visual Studio '15 .0 'introuvable. Vous recherchez la dernière version." Et puis je reçois des erreurs parce que ça ne peut pas inclure les paquets.
Core .NET (PREVIEW)
Impossible de trouver project.json. Lorsque je le configure pour utiliser le fichier csproj, il génère le message d'erreur "Le type de fichier n'a pas été reconnu"
Étape de construction de la commande
J'ai essayé d'exécuter les commandes avec des étapes de construction de commande. "dotnet build" indique l'erreur de ne pas trouver le fichier project.json.
Quiconque construit dotnet 1.1 avec csproj sur des vsts pouvant m'aider à le faire?
Vous pouvez télécharger manuellement dotnet SDK et exécuter dotnet build
à partir de la ligne de commande . Cela pourrait donc ressembler à ceci:
Étape Inline PowerShell (j'ai déjà utilisé Inline Powershell extension par Peter Groenwegen):
Invoke-WebRequest https://go.Microsoft.com/fwlink/?linkid=837977 -OutFile $(System.DefaultWorkingDirectory)\dotnet.Zip
Extraire les fichiers étape:
From: $(System.DefaultWorkingDirectory)\dotnet.Zip
To: $(System.DefaultWorkingDirectory)\dotnet
Restaurer les paquets:
$(System.DefaultWorkingDirectory)\dotnet\dotnet.exe restore
... etc
Toutefois, il existe certaines limitations: .Net Core 1.1 n’a toujours pas été installé sur la machine de l’agent de génération, de sorte que certaines fonctionnalités peuvent ne pas fonctionner. Au moins dotnet test
échouera car il nécessite un environnement d'exécution .Net Core approprié. Peut-être d'autres fonctionnalités également.
en prolongeant la réponse de @Nikolay Balakin, il est vrai que les projets .NET Core utilisant *.csproj
ne sont pas encore pris en charge.
Vous pouvez contourner ce problème en installant vous-même le dernier noyau .NET.
Cela permettra d'exécuter dotnet restore
, dotnet build
, dotnet publish
et dotnet test
.
Utilisez l’extension Inline powershell pour exécuter un script. Vous pouvez créer un lien vers un script ou coller le texte en ligne. J'exécute un script qui est archivé dans le projet.
Il semble que chaque script PowerShell sera exécuté dans son propre environnement. Par conséquent, les chemins, etc., ne subsisteront pas entre les scripts. Par conséquent, les étapes d'installation et de construction doivent être combinées en un seul script.
Vous devez copier le script d'installation dotnet from github et ajouter vos propres commandes de construction à la fin.
Je sais que ce n'est pas une solution à long terme, mais nous l'avons justifiée en supposant que le VSTS prendra en charge, dans un proche avenir, les fichiers * .csproj et que nous effectuerons la conversion pour utiliser la tâche de construction officielle.
Voici un exemple de script powershell, montrant la dernière ligne du script d'installation et les commandes de génération personnalisées à la fin.
...
...
Say "Installation finished"
# this is the end of the downloaded script, add your steps after here.
Say "Running dotnet restore AdminPortal\AdminPortal.csproj"
dotnet restore AdminPortal\AdminPortal.csproj
Say "dotnet publish AdminPortal\AdminPortal.csproj --configuration Release"
dotnet publish AdminPortal\AdminPortal.csproj --configuration Release
Say 'Zipping publish file'
$source = $env:BUILD_REPOSITORY_LOCALPATH
$source = $source + '\AdminPortal\bin\Release\net461\publish'
$destination = $env:BUILD_REPOSITORY_LOCALPATH
$destination = $destination + '\AdminPortal\bin\Release\net461\publish.Zip'
Add-Type -Assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($source, $destination)
Say "Publish finished"
dotnet test "AdminPortal.Tests\AdminPortal.Tests.csproj"
Say "Test finished"
exit 0
Selon ce problème, les projets .NET Core utilisant des fichiers *.csproj
ne sont pas encore pris en charge:
https://github.com/Microsoft/vsts-tasks/issues/3311
"si vous utilisez un agent hébergé - alors l'outillage ne fonctionne que avec les fichiers project.json"
J'ai essayé les tutoriels ici, mais ils semblent aussi être obsolètes (je n'ai même pas pu installer tfx-cli sur ma machine): http://mattvsts.blogspot.nl/2016/11/ commencer à construire-aspnet-core-11-with-tfs.html
Dans mon cas, j’ai une application Web .NET Core et quatre projets de bibliothèque, tous ciblant l’ensemble de la structure depuis que j’utilise EF 6.
J'ai essayé toutes les suggestions ici et aucune d'entre elles n'a fonctionné. Construire avec Visual Studio Construire sur Hosted Agent 2017 construit le projet, mais ne génère aucun fichier binaire. Et toutes les options ci-dessus ont également été construites mais n'ont pas généré les fichiers de sortie.
En lisant, j'ai trouvé que le seul moyen d'obtenir les fichiers de sortie était d'exécuter dotnet publish
, mais cela génère une erreur de construction car nuget ne restitue pas correctement les packages et que msbuild ne les trouve pas. Après avoir été fatigué d'essayer de le faire fonctionner pendant une journée entière, j'ai activé avec désinvolture le "Restore Nuget Packages" sur la tâche VS Buid, et bien qu'il soit dit qu'il est obsolète, cela semble avoir résolu mon problème.