ich von .Net Core 1.1
zu 2.0
meine Web-Anwendung bin migrieren, und hat versucht, es besser verträglich zu machen, indem es sowohl unter 1.1 funktioniert sichergestellt und 2.0.Kein Dotnet-cli excutable abgestimmt bei der Platzierung <DotNetCliToolReference /> in <Choose/> & <When/> Tags von CSPROJ Datei
Wenn es darum, die Pakete Projekt kommt automatisch auf die aktuelle Anpassung geschaltet Version, habe ich <Choose/>
und <When/>
Tags in CSPROJ-Datei wie folgt:
<Choose>
<When Condition="'$(TargetFramework)' == 'netcoreapp1.1'">
<ItemGroup>
<PackageReference Include="..." Version="1.1.2" />
<!-- Some package references -->
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.1.0-preview4-final" />
</ItemGroup>
</When>
<When Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
</When>
</Choose>
Dies funktioniert gut mit <PackageReference/>
s, mit der Anwendung gut kompiliert und läuft unter angegebenen $(TargetFramework)
.
Die dotnet CLI-Tools scheint jedoch durch diese Aktion aus dem Projekt "fehlt". Nach dem Ausführen dotnet restore
Befehl habe ich versucht, dotnet ef database udpate
Befehl, Empfang dieser Nachricht am Ende:
Keine ausführbaren Anpassungs Befehl „Dotnet-ef“
Doch wenn ich nahm die <DotNetCliToolReference/>
s aus <Choose></Choose>
Tag gefunden und run dotnet restore
, alles verhielt sich gut wie zuvor.
Also, was ist mit diesen Tags in dotnet-cli? Kann ich irgendetwas tun, um meine dotnet-cli ItemGroup automatisch gemäß $(TargetFramework)
zu ändern?