2 回答
TA贡献1966条经验 获得超4个赞
Visual Studio是一个很棒的工具,但它在升级依赖项时并不总是做出正确的选择,也不支持MSBuild中可用的所有可能选项。每当你发现自己处于这样的绑定时,你应该手动检查并(如有必要)编辑你的.csproj
文件以解决它。
问题不在于您的文件存在于GAC中或NuGet尚未安装,问题很可能是您的某个项目文件仍然引用了旧版本的System.Web.WebPages.Razor
版本1.0.0.0
,并且您需要找到所有文件引用它并相应地更改它们3.0.0.0
。
在解决方案资源管理器中右键单击项目节点,然后单击
Unload Project
。再次右键单击项目节点,然后单击
Edit <projectName>.csproj
。在文件中搜索引用
System.Web.WebPages.Razor
并更新版本和HintPath
相应的(如下所示)。确保HintPath
您使用实际指向现有文件。对解决方案中的所有相关项目(以及不属于解决方案的DLL中的任何项目)重复这些步骤。
旧参考
<Reference Include="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>..\packages\Microsoft.AspNet.WebPages.1.0.20105.408\lib\net40\System.Web.WebPages.Razor.dll</HintPath></Reference>
更新参考
<Reference Include="System.Web.WebPages.Razor, 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.WebPages.Razor.dll</HintPath></Reference>
您还应该检查web.config
和/Views/web.config
文件,以确保它们不引用此程序集的任何旧版本。
注意:如果上述说明无法解决您的问题,则问题可能不在您的解决方案范围内。很可能是第三方库在某处引用了旧版本的文件。如果是这样,您可以尝试获取DLL的更新版本。
TA贡献1808条经验 获得超4个赞
看起来旧DLL在全局程序集缓存(GAC)中。GAC是一个可以存储可以从机器上的多个应用程序引用的程序集的地方。单击此处以了解有关GAC的更多信息。
使用该工具gacutil
更新GAC中的程序集。
该工具位于Program Files中“Microsoft SDKs”文件夹下的某个位置。对我来说,它位于
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6.1工具\
打开cmd
并导航到我存储gacutil的地方。然后像这样使用它:
gacutil.exe -i [path to your assebly] -f
。
该-i
参数用于指示装配的位置。该-f
参数用于强制更新程序集(如果已经存在)。
例
假设您的DLL位于
C:\ TEMP \ System.Web.WebPages.Razor.dll
然后你会跑 gacutil.exe -i "C:\temp\System.Web.WebPages.Razor.dll" -f
- 2 回答
- 0 关注
- 474 浏览
添加回答
举报