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

  • 相关阅读:
    【内核】linux内核启动流程详细分析【转】
    【Linux】Linux基本命令扫盲【转】
    【Linux高级驱动】linux设备驱动模型之平台设备驱动机制【转】
    【Git】Git与GitHub 入门【转】
    usbnet驱动深入分析-usb虚拟网卡host端【转】
    USB设备被识别流程【转】
    LinuxUSB驱动程序调试--009:编写应用程序---验证协议【转】
    公积金条例久拖不改是谁在博弈?
    Android事件机制全然解析
    《Java并发编程实战》第二章 线程安全性 读书笔记
  • 原文地址:https://www.cnblogs.com/makesense/p/7008466.html
Copyright © 2011-2022 走看看