2017-03-06 227 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