zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    aix lvm_lv_vg
    Centos6.5 telnet wireshark
    Qt开发初步,循序渐进,preRequest for 蓝图逆袭
    CentOs文件实时同步
    Qt GUI开发实战初期
    linux环境开发私房菜
    linux GUI程序开发
    Centos6.5 Qt4开发 Cannot find -lGL QApplication not file or dir
    Centos6.5升级gcc for qt5.3.1
    对Socket CAN的理解(5)——【Socket CAN控制器的初始化过程】
  • 原文地址:https://www.cnblogs.com/makesense/p/7008466.html
Copyright © 2011-2022 走看看