2017-03-06 124 views
7

我有一个ASP.NET Core网站,它依赖于2个类库。无法升级或降级NuGet包

他们都参考Microsoft.NETCore但版本已经得到了某种方式混合起来,使得我收到警告:从1.1.0 Microsoft.NETCore.App到1.0.3

检测包降级

的NuGet不会让我改变的Microsoft.NetCore.App版本:

Cant update package

如果我尝试升级或降级,我得到的错误

以下版本无法使用,由于该项目的附加约束或packages.config

我怎么解决这个问题?

我的csproj文件:

<Project Sdk="Microsoft.NET.Sdk.Web"> 

    <PropertyGroup> 
    <TargetFramework>netcoreapp1.0</TargetFramework> 
    <PreserveCompilationContext>true</PreserveCompilationContext> 
    <AssemblyName>AutomotiveWebPortalCore</AssemblyName> 
    <OutputType>Exe</OutputType> 
    <PackageId>AutomotiveWebPortalCore</PackageId> 
    <UserSecretsId>aspnet-AutomotiveWebPortalCore-20170223120414</UserSecretsId> 
    <RuntimeFrameworkVersion>1.0.3</RuntimeFrameworkVersion> 
    <PackageTargetFallback>$(PackageTargetFallback);dotnet</PackageTargetFallback> 
    </PropertyGroup> 

    <ItemGroup> 
    <Content Update="wwwroot\**\*;Views\**\*;Areas\**\Views;appsettings.json;web.config"> 
     <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </Content> 
    </ItemGroup> 

    <ItemGroup> 
    <PackageReference Include="AutoMapper" Version="5.2.0" /> 
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="1.2.0" /> 
    <PackageReference Include="DevExtreme.AspNet.Core" Version="16.2.4" /> 
    <PackageReference Include="DevExtreme.AspNet.Data" Version="1.2.4" /> 
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.2" /> 
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.0.2" /> 
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.0.1" /> 
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink.Loader" Version="14.0.1" /> 
    <PackageReference Include="bootstrap" Version="3.3.7" /> 
    <PackageReference Include="HubSpot.Tether" Version="1.1.1" /> 
    </ItemGroup> 

    <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish"> 
    </Target> 

    <ItemGroup> 
    <DotNetCliToolReference Include="BundlerMinifier.Core" Version="2.2.301" /> 
    </ItemGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\AutomotiveDAL\AutomotiveDAL.csproj" /> 
    <ProjectReference Include="..\AutomotiveDTO\AutomotiveDTO.csproj" /> 
    </ItemGroup> 

</Project> 

编辑:

这里是我的类库引用:

数据访问层:

<Project Sdk="Microsoft.NET.Sdk"> 

    <PropertyGroup> 
    <TargetFramework>netcoreapp1.0</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <PackageReference Include="AutoMapper" Version="5.2.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0-msbuild3-final" /> 
    </ItemGroup> 

</Project> 

数据传输对象:

<Project Sdk="Microsoft.NET.Sdk"> 

    <PropertyGroup> 
    <TargetFramework>netcoreapp1.0</TargetFramework> 
    </PropertyGroup> 

</Project> 
+0

你可以用versons发布所有的依赖关系吗? –

+0

我该怎么做? – Smithy

+0

@Smithy您的项目是否使用'project.json'或'.csproj'来引用包?你能发布该文件的内容吗? –

回答

6

即使在全新的空白ASP.NET Core项目中,“由于附加约束条件,以下版本也不可用”消息似乎也会发生。我认为这是NuGet GUI的bug或功能。 (我正在使用Visual Studio 2017的最终版本)

您可以通过直接编辑.csproj文件来解决该问题:右键单击解决方案资源管理器中的项目并选择Edit(projectname).csproj

您可以在第一的PropertyGroup撞了Microsoft.NETCore.App的版本(目标框架):

<PropertyGroup> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 

    <!-- snip --> 

    <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion> 

    <!-- snip --> 
</PropertyGroup> 

然后,关闭文件和重建项目。我用你在问题中提到的所有(公共)依赖关系来测试它,但没有看到任何包版本冲突。

+1

你是明星队友!那么VS与狡猾的工具仍然是! – Smithy

+0

我已经直接编辑了.csproj,并解决了关于降级的警告,我检查了其他类库并且也指向了netcoreapp1.0。我编辑了我的答案来表明,这是好还是坏? – Smithy