2017-08-17 93 views
0

标签我从迁移到.Net Core 1.12.0 Web应用程序时,并试图使其更兼容,确保它匹配的作品都在1.1和2.0。没有DOTNET-CLI excutable将<DotNetCliToolReference />中的.csproj文件

当谈到使得项目包自动适应当前切换的版本,我用<Choose/><When/>标签这样的.csproj文件:

<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> 

这正常工作与<PackageReference/> S,有很好的应用编译并在指定的$(TargetFramework)下运行。

但是,dotnet cli工具似乎是通过此操作从项目中“丢失”的。执行dotnet restore命令后,我试图dotnet ef database udpate命令,最后收到了这样一条消息:

没有可执行找不到匹配的命令“的dotnet-EF”

然而,当我拿着<DotNetCliToolReference/>出去了<Choose></Choose>标签和运行dotnet restore,一切都像以前一样表现良好。

那么,在dotnet-cli中运行时,这些标签有什么问题?有什么我可以做,使我的dotnet-cli ItemGroup自动更改根据$(TargetFramework)

回答

0

DotNetCliToolReference的独立于csproj文件中的目标框架。每个csproj文件只能有一个版本的Microsoft.EntityFrameworkCore.Tools.DotNet,并且不能有条件地包含它。删除选择/何时使dotnet-ef工作。

相关问题