web-dev-qa-db-fra.com

Les services de l’équipe de Visual Studio créent le noyau .net 1.1

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?

15
Tom

Dans Visual Studio Team Services, accédez à Build & Release> Builds et cliquez sur Edit pour obtenir la définition de construction à mettre à jour.

 enter image description here

Accédez à l'onglet Options, remplacez la file d'attente de l'agent par défaut par Hosted VS2017, puis enregistrez.

 Hosted VS2017

20

Vous pouvez télécharger manuellement dotnet SDK et exécuter dotnet build à partir de la ligne de commande . Cela pourrait donc ressembler à ceci:

  1. É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
    
  2. Extraire les fichiers étape:

    From: $(System.DefaultWorkingDirectory)\dotnet.Zip
    To: $(System.DefaultWorkingDirectory)\dotnet
    
  3. 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.

4
Nikolay Balakin

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.

 enter image description here

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

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

1
Wiebe Tijsma

Dans VSTS, vous devez ajouter netcore exists en tant que demande.

  1. Allez à votre définition de build
  2. Cliquez sur l'onglet Options  position of option tab
  3. Ajouter le code de demande netcore exists how to input the demand netcore exists
0
maracuja-juice

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. 

0
Jefry Pozo