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

  • 相关阅读:
    程序员最好也要懂的一些沟通说服技巧
    MapFields和并行计算(OpenFOAM)
    Python 调用自己编写的Class
    Ubuntu 图形桌面死机重启(机器不重启)
    Ubuntu 安装 Visual Studio Code
    Ubuntu图形界面和终端界面切换快捷键
    Linux直接在通过终端打开图片文件
    Linux新建环境变量快速切换到文件夹(export)
    Python文件读写(一)
    Dictonary(Python)(一)
  • 原文地址:https://www.cnblogs.com/makesense/p/7008466.html
Copyright © 2011-2022 走看看