2017-09-04 66 views
3

我正在使用Visual Studio 2017.我剛剛創建了一個新的ASP.NET Core 2.0項目。我試圖使用NuGet來拉入最新的StackExchange.Redis 1.2.6(截至2017年9月3日)。VS.NET 2017部隊在ASP.NET 2.0中使用StackExchange.Redis 1.2.4.0核心應用程序

但是,一旦我這樣做了,Visual Studio就會抱怨我的一個RedisResult變量中存在衝突的引用。它說

錯誤CS0433類型 'RedisResult' 在兩個存在 'StackExchange.Redis.StrongName,版本= 1.2.4.0,文化=中性公鑰= c219ff1ca8c2ce46' 和「StackExchange.Redis,版本= 1.2.6.0文化=中性公鑰=空」服務器C:\ git的\飛濺\服務器\ BackPlaneConnection \ Channel.cs 19主動

然後,我發現我並不真的需要手動添加任何NuGet包爲了在我的ASP.NET Core 2.0應用程序中使用StackExchange.Redis。事實上,如果我手動添加對不同版本的StackExchange.Redis的引用,它會導致上面顯示的解決衝突。

檢查構建輸出。該DLL實際上來自C:\ Program Files \ dotnet \ sdk \ NuGetFallbackFolder \ stackexchange.redis.strongname

我試着刪除stackexchange.redis.strongname,但它仍然以某種方式自動下載到我的個人nuget文件夾。

它幾乎感覺像ASP.NET Core 2.0內部需要StackExchange.Redis 1.2.4.0,但這對我來說確實沒有意義。

我在使用ASP.NET Core 1.1時沒有同樣的問題。有什麼辦法讓我的ASP.NET Core 2.0使用NuGet中最新的StackExchange.Redis?

回答

1

找到原因。這是因爲默認情況下VS.NET 2017打開了「允許NuGet下載缺失的軟件包」。構建屏幕也提到了這一點。

恢復的NuGet包... 爲了防止從的NuGet構建過程中恢復的包,打開Visual Studio的選項對話框中,單擊包管理器節點上,取消選中「允許的NuGet構建過程中下載缺失的軟件包。」

在我的情況下,要完全避免此問題,我需要執行以下步驟來解決我的問題。

  1. 轉到Visual Studio選項對話框。
  2. 取消「允許的NuGet下載缺失的軟件包」在未來
  3. 打開的NuGet Manager會自動以避免下載NuGet包中添加最新的StackExchange.Redis包
  4. 點擊「清除所有的Nu​​Get緩存(S)」來清理舊的NuGet緩存
0

我向「StackExchange.Redis」包添加了一個條件標誌,這使得它工作。我試過兩個機器上的兩個新項目的修復。不要問我爲什麼它可以工作。

<Project Sdk="Microsoft.NET.Sdk.Web"> 
     <PropertyGroup> 
     <TargetFramework>netcoreapp2.0</TargetFramework> 
     </PropertyGroup> 

     <ItemGroup> 
     <Folder Include="wwwroot\" /> 
     </ItemGroup> 

     <ItemGroup> 
     <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 
     </ItemGroup> 
     <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' "> 
     <PackageReference Include="StackExchange.Redis" Version="1.2.6" /> 
     </ItemGroup> 

    </Project> 

I gave the same answer in my duplicate question

相關問題