gpt4 book ai didi

visual-studio-2012 - 添加对 System.Web.WebPages 的引用 3.0 立即更改为 2.0

转载 作者:行者123 更新时间:2023-12-02 03:41:28 24 4
gpt4 key购买 nike

总结:我在解决方案中有一个项目无法指向 WebPages 3.0(或 Helpers 3.0)。其他的没问题,但有一个会立即解析为 Program Files x86 2.0 程序集。

背景:我有一个我继承的 MVC 应用程序。我对其进行了一些更新,在上一次迭代中将其升级为 MVC-3。切入正题,我发现自己陷入了一种意想不到的困境,这种困境似乎在我尝试的修复过程中越滚越大。

我一直致力于二进制部署,消除了在构建服务器和网络服务器上安装包的需要。因此,我在解决方案树中有 MVC/ASP.Net WePage 二进制文件,其中包含对这些本地副本的引用。

我所做的更改:信不信由你,我从来没有搞砸过 NU GET,因此决定试一试。我删除了我所有的本地二进制文件(检查了 2x、3x、100x 以确保)并添加了 MVC 5 及其依赖项。这看起来很棒,因为我可以消除我自己开发的二进制模式,转而支持存储在磁盘/TFS 上解决方案树下的包。我还认为我不妨将所有项目都指向最新的 4.5 FW。

问题:编译时 VS 提示我有提到的 DLL 的 v2 和 v3,但我没有引用 v2。此外,甚至在编译之前,如果我删除引用并重新添加它(指向包 lib 内容),它会立即以 v2.0 的形式出现,并且解析的文件夹是 x86 v2 实例。

在尝试解决此问题时,我删除了软件包并重新安装了几次,但均无济于事。

我也尝试过将绑定(bind)重定向添加到 we.config,但我怀疑这是运行时的事情?我在这个解决方案中还有一些其他项目,都很好,指向3.0!

我使用反射器查看 bin 文件夹中所有程序集的引用,以为我会找到指向页面 2.0 的内容,但我没有。

查看 csproj 文件,我在 Include 中看到版本硬编码为 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>

Reference showing 2.0 resolution

最佳答案

我在网页和助手的 csproj 中找到了第二个包含!我不知道他们是怎么到那里的。卸载 NUGET 包会删除第一个引用,但不会删除第二个。更令人沮丧的是,第二个引用没有指定版本或位置。添加版本和位置特定引用(NUGET 或手动)将立即被 GAC 版本覆盖!

关于visual-studio-2012 - 添加对 System.Web.WebPages 的引用 3.0 立即更改为 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19713174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com