摘要:我有一個解決方案中的項目,我無法指向WebPages 3.0(或Helpers 3.0)。其他的都很好,但是立即解決了Program Files x86 2.0程序集。添加對System.Web.WebPages的引用3.0立即更改爲2.0
背景:我有一個我繼承的MVC應用程序。我已經做了一些更新,在最後一次迭代中將它提升爲MVC-3。爲了開始追逐,我發現自己處於意想不到的束縛之中,似乎通過我的嘗試修復雪球。
我一直在努力實現二進制部署,無需在構建服務器和Web服務器上安裝軟件包。因此,我在解決方案樹中使用了MVC/ASP.Net WePage二進制文件,並引用了這些本地副本。
我改變了什麼:信不信由你,我從來沒有和NU GET搞混,並決定給它一個旋風。我刪除了所有本地二進制文件(2倍,3倍,100倍檢查以確保)並添加了MVC 5及其依賴項。這看起來很棒,因爲我可以刪除我自己生成的二進制模式,以支持存儲在磁盤/ TFS上的解決方案樹下的軟件包。我也想到我可能會把所有的項目都指向最新的4.5 FW。
問題:關於編譯VS正在抱怨我有v2和v3的提到的DLL,但我沒有提及v2。另外,在編譯之前,如果我刪除引用並重新添加引用(指向包lib內容),它將立即以v2.0形式出現,並且解析的文件夾是x86 v2實例。
雖然試圖解決這個問題,我已經刪除了包並重新安裝了幾次,但無濟於事。
我也嘗試添加綁定重定向到we.config,但我懷疑這是一個運行時的東西?我在這個解決方案中有許多其他項目,所有這些都很好,指向3.0!
我已經使用反射器來查看bin文件夾中所有程序集的引用,認爲我會找到指向頁面2.0的東西,但我不知道。
尋找csproj文件,我看到在包含中硬編碼爲2.0的版本。我將它改爲3.0,當我重新加載解決方案時,它恢復爲2.0。哎呀!
我已關閉並重新加載解決方案一百次。我已經清理了1000次。我已經多次手動刪除了obj/bin文件夾。
我只是不知道該如何調試!
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.Helpers.dll</HintPath>
</Reference>