Lorsque j'essaie d'ajouter un contrôleur dans un projet ASP.NET Core à l'aide de Visual Studio 15 Enterprise avec Update 3, le message d'erreur ci-dessous s'affiche:
"The was an error running the selected code generator: No executables found matching command 'dotnet-aspnet-codegenerator'"
Si vous utilisez csproj (Visual Studio 2017) au lieu de project.json, vous devez ajouter les éléments suivants à votre fichier csproj:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
Pour la dernière version, dans project.json, ajoutez les éléments suivants sous dépendances:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"type": "build",
"version": "1.1.0-preview4-final"
}
et les suivants sous outils:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"imports": [
"portable-net45+win8"
]
}
Une réponse plus robuste que la copie des numéros de version dans votre fichier de configuration consiste à utiliser NuGet pour garantir que les packages sont ajoutés à votre projet.
Outils -> Gestionnaire de paquets NuGet -> Gérer les paquets NuGet pour la solution.
Tout d’abord, mettez tout à jour. Choisissez l'onglet Mises à jour. Cochez la case Tout mettre à jour et exécutez ceci plusieurs fois. Ne soyez pas surpris si certaines choses rétrogradent les premières fois où vous exécutez la mise à niveau. Certaines dépendances semblent devoir être gérées séquentiellement. Il m'a fallu environ 5 mises à jour pour que tout soit à jour.
Ensuite, dans l'onglet Parcourir, recherchez CodeGeneration.Tools
. Installez-le. Faites la même chose pour CodeGenerators.Mvc
. Lorsque vous trouvez des messages d'erreur supplémentaires, vous devriez pouvoir trouver tous les paquets manquants dans NuGet.
Ajoutez ce qui suit à votre project.json:
Sous dépendances:
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
}
Sous outils:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild3-final" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild3-final" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
</ItemGroup>
Après avoir ajouté, j’ai installé CodeGenerators.Mvc avec le gestionnaire de paquets Nuget.
J'avais toujours une erreur disant qu'il ne pouvait pas trouver un fichier dans le dossier MCD, j'ai donc dû copier et coller tout le dossier bin\Debug\netcoreapp1.1 dans bin\MCD\Debug\netcoreapp1.1
J'ai couru l'échafaudage et ça a fonctionné!
Dans Dotnet Core 2.1.1, vous vous attendriez à ce que la situation ait changé et vous n'aurez peut-être pas besoin d'ajouter grand chose. Je suis désolé de vous agacer, mais la situation est la même et il ne vous reste plus qu'à mettre à jour votre version de l'outil ou du package que vous souhaitez utiliser.
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
Cela a fonctionné pour moi. J'espère que cela fonctionnera pour tous les autres qui resteront coincés ici. Notez que la référence de clé est DotNetCliToolReference
pas PackageReference
J'ai rencontré le même problème dans Visual Studio Mac Community Edition 2017. Avant d'exécuter la commande scaffold
à partir du répertoire du projet, assurez-vous que le répertoire contient les fichiers Program.cs
, Startup.cs
et .csproj
. sinon, exécutez la commande ls-al
puis cd
dans le répertoire du projet qui se trouverait dans votre répertoire de projet actuel, puis exécutez la commande scaffold
. Une erreur évidente que beaucoup oublient.
Pour le Mac (OS X), je devais exécuter:
dotnet tool install --global dotnet-aspnet-codegenerator --version 2.2.1
Puis j'ai ajouté à mon .zshrc
(ou son équivalent bash)
export PATH=$HOME/.dotnet/tools:$PATH
Et je devais m'assurer de redémarrer Terminal.
Ajoutez simplement la balise 'DotNetCliToolReference' et la conception du code de package sur .csproj et exécutez la commande code-generate sur la solution racine . Cela a fonctionné pour moi.
.csproj <ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3" />
</ItemGroup>
<ItemGroup>
...
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" />
</ItemGroup>
Commande PS C:\Users\miche\projetos\asp_net_core\crud> dotnet aspnet-codegenerator controller -name ProdutosController -m Produto -dc AppDataContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
N'oubliez pas de construire et de restaurer la solution après l'ajout du paquet;)
Pour VS 2015, fichier project.json -
sous dépendances ajouter -
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final"
puis sous outils ajouter
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
Je viens de taper sous Linux:
~/.dotnet/tools/dotnet-aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries
Donc, je n'ai pas commencé avec 'dotnet' (ma version actuelle: 2.2.300)
Je n'aime pas cette solution, mais cela a fonctionné.
Dans Visual Studio Code, changez votre yourproject.csproj
<pre>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.4" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.6" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" version= "2.1.0-preview1-final" />
<PackageReference Include="Microsoft.Extensions.SecretManager.Tools" version= "2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" version="2.1.0-preview1-final" />
</ItemGroup>`enter code here`
</pre>