Visual Studio不加载项目引用

nvi*_*vi9 13 .net csproj visual-studio visual-studio-2013 windows-10

我有一个Visual Studio(Community 2013)解决方案,我的电脑上有许多c#项目,我刚刚从7升级到Windows 10.该项目使用.Net Framework 4.0 Client Profile.在win7上一切正常,但现在其中一个项目似乎没有加载引用.引用项目附近有黄色三角形,不是同一解决方案引用的项目(因此NuGet下载的系统和引用未加载).

参考...

资源是在解决方案的另一个项目,别人不行.当我打开系统引用的属性选项卡时,该Path字段为空,因此该Resolved字段为False...

空路

此外,在.csproj文件中,一切似乎都没问题,有需要的<HintPath>节点,相对(或绝对,如果引用在另一个驱动器上),以及正确的现有路径.
另一个奇怪的事情是:在对象浏览器中,所有引用都是(看似)加载的:

对象浏览器似乎没问题

所以我该怎么做:

  • 重新创建项目文件(通过创建新项目并再次添加所有文件和引用);
  • 改变项目配置中的内容;
  • 使用更新版本的.Net;
  • 改变VS的配置;
  • 使用另一个VS(例如社区2015)或重新安装当前的VS?

小智 13

我也遇到了这个问题,花了一些时间才弄明白.问题是NuGet改变了包的恢复方式."旧方式"需要带有3个文件(nuget.config,nuget.exe,nuget.targets)的".nuget"文件夹以及项目文件中的一些设置,如:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
Run Code Online (Sandbox Code Playgroud)

这导致项目被打破.

要解决此问题,请将缺少的目录复制到项目中(使用较旧版本的Visual Studio/NuGet或从拥有它的同事那里获取)或者只是从项目文件中删除上述部分.

为获得最佳效果,请删除:

<RestorePackages>true</RestorePackages> 
Run Code Online (Sandbox Code Playgroud)

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
Run Code Online (Sandbox Code Playgroud)

来自项目文件!


有关此主题的更多信息,请访

http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore

https://docs.microsoft.com/en-us/visualstudio/ide/troubleshooting-broken-references

  • 哇,微软手上的东西真是一团糟。显然,在 VS2017 中,这仍然是一个问题。我为此挣扎了2个小时。当我最终阅读这篇文章并将 .nuget 文件夹从另一个项目复制到解决方案文件夹时,一切终于奏效了。谢谢!! (2认同)

小智 5

确保两个项目都针对相同的框架版本。例如:目标框架 .Net Framework 4.5.1 无法与 4.5 一起使用

  • 天哪,我在这个上花了 2 个小时。感谢那! (2认同)