• Visual Studio: Could not resolve this reference. Could not locate the assembly


    使用Visual Studio开发的.NET Framework ASP.NET MVC项目本地正常运行,代码签入后,其他同事从代码库签出后不能正常编译(Could not resolve this reference. Could not locate the assembly),项目下引用的不少类库上显示黄色的小三角,也就是找不到引用类库。判断这种情况应该是类库没有自动Restore,于是点击解决方案,右键Restore Nuget Packages手动修复,很快完成了,但是黄色的小三角并没有消除。打开项目文件夹发现packages.config下包含的libraries都已经恢复到和Solution文件同一目录的packages文件夹里了。很是奇怪。

     打开csproj文件,仔细检查后发现了原因,原来项目文件在自己的目录下找packages文件夹,但是实际上解决方案恢复的packages文件夹在其上级目录,当然就找不到了。 哈哈,这才想起来,在上传代码的时候,觉得Solution文件放在project目录下不是很好,于是就把它拷贝到了外面,重新把项目文件加到解决方案里,自己把自己给坑了。。。

    <Reference Include="Newtonsoft.Json">
      <HintPath>packagesNewtonsoft.Json.12.0.2lib
    et45Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="System.Web.Optimization">
      <HintPath>packagesMicrosoft.AspNet.Web.Optimization.1.1.3lib
    et40System.Web.Optimization.dll</HintPath>
    </Reference>

     知道了原因自然就让容易解决,把packages文件夹拷贝到项目文件夹下,选中项目,右键Unload/Reload Project,问题解决了(有时候可能需要关闭重新打开解决方案)。 但是这样做只能是变通地解决问题,其他同事签出代码,还是需要手动去移动packages文件夹,这样不太好。解决办法是:要么在Visual Studio对应项目上手动删除再重新添加Libraries依赖,要么手动修改csproj里的包引用为相对路径,修改后的Libraries路径如下所示:

    <Reference Include="Newtonsoft.Json">
      <HintPath>..packagesNewtonsoft.Json.12.0.2lib
    et45Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="System.Web.Optimization">
      <HintPath>..packagesMicrosoft.AspNet.Web.Optimization.1.1.3lib
    et40System.Web.Optimization.dll</HintPath>
    </Reference>

     有没有更酷的解决方法呢?答案是有,打开ToolsNuget Package ManagerPackage Manager Console,可以使用以下Powershell命令自动完成重新安装,如下所示:

      Update-Package -Reinstall

    个人总结:.Net Framework项目,Nuget restore的packages文件夹总是和solution文件放同一个目录,项目文件(XXX.csproj)会按照相对路径去找相应的Libraries依赖,当solution文件移动到上级目录后,就会出现项目找不到Libraries依赖的情况,最好在刚开始就把solution文件保存到项目文件夹的上级目录。

    更多参考:Stack overflow: Could not resolve this reference. Could not locate the assembly

  • 相关阅读:
    WIN7右下角的声音图标不见了
    无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
    查看表空间信息SQL集合
    Oracle分区表
    Oracle数据库的创建、数据导入导出
    Oracle查询出最最近一次的一条记录
    adb命令
    synergy在Windows和ubuntu 多台PC共享一套键盘鼠标
    git add 之后因为没提交正确文件需要撤销
    make clean-kernel && make kernel
  • 原文地址:https://www.cnblogs.com/makesense/p/7008466.html
Copyright © 2020-2023  润新知