Wenn ich versuche, einen Controller in einem ASP.NET Core-Projekt mit Visual Studio 15 Enterprise mit Update 3 hinzuzufügen, erhalte ich den folgenden Fehler:
"The was an error running the selected code generator: No executables found matching command 'dotnet-aspnet-codegenerator'"
Wenn Sie csproj (Visual Studio 2017) anstelle von project.json verwenden, müssen Sie der csproj-Datei Folgendes hinzufügen:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
Fügen Sie für die neueste Version in project.json die folgenden Abhängigkeiten hinzu:
"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"
}
und die folgenden unter tools:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"imports": [
"portable-net45+win8"
]
}
Eine zuverlässigere Antwort als das Kopieren von Versionsnummern in Ihre Konfigurationsdatei ist die Verwendung von NuGet, um sicherzustellen, dass die Pakete Ihrem Projekt hinzugefügt werden.
Tools -> NuGet Package Manager -> Verwalten von NuGet Packages für Solution.
Zuerst alles auf den neuesten Stand bringen. Wählen Sie die Registerkarte Updates. Aktivieren Sie das Kontrollkästchen Alle aktualisieren, und führen Sie dies einige Male aus. Seien Sie nicht überrascht, wenn einige Dinge beim ersten Durchführen des Upgrades heruntergestuft werden. Einige Abhängigkeiten müssen sequenziell behandelt werden. Ich brauchte ungefähr 5 Upgrades, um alles auf den neuesten Stand zu bringen.
Suchen Sie dann auf der Registerkarte Durchsuchen nach CodeGeneration.Tools
. Es installieren. Machen Sie dasselbe für CodeGenerators.Mvc
. Wenn Sie zusätzliche Fehlermeldungen finden, sollten Sie eventuell fehlende Pakete in NuGet finden.
Fügen Sie Ihrem project.json Folgendes hinzu:
Unter Abhängigkeiten:
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
}
Unter Tools:
"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>
Nach dem Hinzufügen habe ich CodeGenerators.Mvc mit dem Nuget Package Manager installiert.
Ich habe immer noch eine Fehlermeldung erhalten, die besagt, dass im Ordner MCD keine Datei gefunden werden kann. Daher musste ich den gesamten Ordner bin\Debug\netcoreapp1.1 in bin\MCD\Debug\netcoreapp1.1 kopieren und einfügen
Ich lief das Gerüst und es hat funktioniert!
In dotnet core 2.1.1 erwarten Sie, dass sich die Situation geändert hat und Sie möglicherweise nicht viel hinzufügen müssen. Es tut mir leid, Sie zu ärgern, aber die Situation ist dieselbe und Sie müssen jetzt nur noch Ihre Version des Tools oder Pakets, das Sie verwenden möchten, aktualisieren.
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
Das hat bei mir funktioniert. Ich hoffe, es funktioniert für alle anderen, die hier stecken bleiben. Beachten Sie, dass die Schlüsselreferenz DotNetCliToolReference
nicht PackageReference
ist.
In Visual Studio Mac Community Edition 2017 ist dasselbe Problem aufgetreten. Stellen Sie vor dem Ausführen des Befehls scaffold
im Projektverzeichnis sicher, dass das Verzeichnis die Dateien Program.cs
, Startup.cs
und .csproj
enthält. Wenn nicht, dann führen Sie den Befehl ls-al
und dann cd
in das Projektverzeichnis ein, das sich in Ihrem aktuellen Projektverzeichnis befindet, und führen Sie dann den Befehl scaffold
aus. Ein offensichtlicher Fehler, den viele übersehen.
Für den Mac (OS X) musste ich Folgendes ausführen:
dotnet tool install --global dotnet-aspnet-codegenerator --version 2.2.1
Dann fügte ich zu meinem .zshrc
(oder bash äquivalent) hinzu
export PATH=$HOME/.dotnet/tools:$PATH
Und ich musste dafür sorgen, dass Terminal neu gestartet wurde.
Fügen Sie einfach das Tag 'DotNetCliToolReference' und das Paketcode-Design in .csproj hinzu und/ Ausführen des Befehls zum Generieren des Codes auf der Root-Lösung . Das hat für mich gearbeitet.
.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>
Befehl PS C:\Users\miche\projetos\asp_net_core\crud> dotnet aspnet-codegenerator controller -name ProdutosController -m Produto -dc AppDataContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
Vergessen Sie nicht, eine Lösung nach dem Hinzufügen eines Pakets zu erstellen und wiederherzustellen;)
Für VS 2015 in der Datei project.json -
unter Abhängigkeiten hinzufügen -
"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"
dann unter tools add-
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
Ich habe gerade Linux eingegeben:
~/.dotnet/tools/dotnet-aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries
Also habe ich nicht mit 'dotnet' angefangen (meine aktuelle Version: 2.2.300)
Ich mag diese Lösung nicht, aber es hat funktioniert.
Ändern Sie in Visual Studio Code Ihr Projekt.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>