2017-08-17 3 views
0

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?

Antwort

0

DotNetCliToolReference sind unabhängig von den Ziel-Framework (s) in der csproj-Datei. Sie können nur eine Version von Microsoft.EntityFrameworkCore.Tools.DotNet pro CSproj-Datei haben, und es kann nicht bedingt enthalten sein. Entfernen Sie die Auswahl/Wann dotnet-ef-Arbeit zu machen.

Verwandte Themen