La construction d'une .NET de Base application via la ligne de commande, de sorte qu'il fonctionne sur une machine sans .NET de Base installé

Mon objectif final est de créer une croix-plate-forme (non web) l'application de la console, donc je suis en train d'explorer .NET, Base droite maintenant.

Dans mon précédent .Projets NET, j'ai fait toutes les de développement à l'intérieur de Visual Studio, mais j'ai également créé un batch/MSBuild fichier afin que je puisse construire l'ensemble du projet (y compris les installations, les packages NuGet, des fichiers zip avec les fichiers binaires, etc.) avec un simple clic. Voici un exemple d'un projet précédent.

En fin de compte, je veux faire quelque chose de similaire avec mon .NET de Base d'un projet de test.

Mais pour l'instant je ne suis pas à la première étape: je ne suis pas en mesure de le construire en dehors de Visual Studio, de sorte que le résultat fonctionne sur un autre ordinateur Windows sans .NET de Base installé.

(dans la première étape, je suis ignorant la croix-plateforme - je serai heureux de l'obtenir pour fonctionner sur Windows)


Ce que j'ai

J'ai réussi à le faire fonctionner à l'intérieur de Visual Studio 2015 de la Communauté de l'Édition comme suit:

  1. créer un nouveau projet dans Visual Studio: "Nouveau Projet" ⇒ "Web" ⇒ "Application Console (Package)"

  2. créer un nouveau profil de publication à l'intérieur de Visual Studio ("Build" ⇒ "Publier" dans le menu).

    Cela va créer un script PowerShell (et un fichier XML avec les paramètres)

Voici mon test du projet sur GitHub.

Quand je fais "Build" ⇒ "Publier" dans le menu à nouveau, Visual Studio apparemment exécute le script PowerShell à nouveau.

Le résultat est un peu plus de 90 MO, se compose de 825 fichiers en 598 dossiers, et ressemble à ceci:

La construction d'une .NET de Base application via la ligne de commande, de sorte qu'il fonctionne sur une machine sans .NET de Base installé

Quand je copie sur une autre machine (Win 7 /.NET 4 installé /.NET de Base pas installé), il fonctionne.


Ce que j'ai essayé d'obtenir le même résultat en dehors de Visual Studio

1. dotnet publier

Cette réponse et cette réponse son comme je peux l'utiliser dnu publish pour obtenir le même résultat via la ligne de commande.

Je comprends que pièces de .NET de Base sont toujours les cibles en mouvement, alors apparemment dnu est dotnet au lieu.

J'ai donc essayé d'exécuter dotnet publish (et créé un fichier de commandes) pour elle:

dotnet publish "%~dp0\src\CoreTestVisualStudio" -c Release -r win7-x64 -o "%~dp0\release\cli"

Le résultat consiste en une .exe fichier et un tas de Dll, seulement 25 fichiers et de 1,5 MO, le tout dans un seul dossier:

La construction d'une .NET de Base application via la ligne de commande, de sorte qu'il fonctionne sur une machine sans .NET de Base installé

Évidemment le .NET de Base d'exécution est-ce qui manque ici, et comme prévu, cette application se bloque lorsque je tente de l'exécuter sur une machine sans .NET de Base installée (le même que celui mentionné ci-dessus).

2. Le script PowerShell à partir de la publication du profil

J'ai essayé d'exécuter le script PowerShell (qui a été créé quand j'ai créé le profil de publication) en dehors de Visual Studio, mais il a échoué parce que le script attend certains paramètres et je ne sais pas ce qu'à passer:

param($publishProperties, $packOutput, $nugetUrl)

Il y a aussi cette ligne dans le script:

# to learn more about this file visit http://go.microsoft.com/fwlink/?LinkId=524327

...mais le lien juste points de la page d'atterrissage de l' .NET Développement Web et des Outils de Blog.


TL;DR

Ce que je fais mal?

Je sais que la première version de .NET de Base se concentre principalement sur ASP.NET mais ce que j'ai compris, ASP.NET applications de Base sont juste la console apps, alors j'ai pensé à une base de console application serait de travailler maintenant.

D'autre part, la plupart des console application "mise en route" docs sont toujours portés disparus, donc c'est peut-être un peu trop tôt et dotnet publish pour console applications n'est pas encore fini?

Edit après quelques jours: je suis penser que je fais rien de mal et que c'est un problème dans the.NET de Base outils de ligne de commande, donc je publié sur les outils de ligne de commande' issue tracker.

  • Avez-vous vu cela? github.com/dotnet/cli/blob/master/Documentation/intro-to-cli.md Vous pouvez essayer d'exécuter dotnet build de générer des exécutables actifs.
  • Non, je n'ai pas vu cela avant. Il ne fonctionne pas pour moi, si. Tout d'abord, dotnet build n'existait pas sur ma machine. Puis j'ai installé la dernière version à partir de votre lien, et maintenant dotnet build existe, mais déclenche une exception: Unhandled Exception: System.TypeLoadException: Could not load type 'Microsoft.DotNet.Tools.Compiler.CompilerCommandApp' from assembly 'dotnet-compile, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. at Microsoft.DotNet.Tools.Build.Program.Main(String[] args)
  • Je devrais peut-être mieux déposer une question sur GitHub? J'ai posté la question ici parce que je pensais que je faisais quelque chose de mal, mais si dotnet build est la façon actuelle maintenant et il se bloque sur ma machine, je suppose que c'est effectivement un bug.
  • Je suis passé par un problème similaire à essayer de reproduire le Visual Studio Publier sur la ligne de commande. Pour moi, il manquait l'exécution de l'option. Voici un lien vers le valide moment de l'exécution valeurs: docs.microsoft.com/en-us/dotnet/core/rid-catalog