我有一个 Visual Studio (Community 2013) 解决方案,我的电脑上有许多 c# 项目,我刚刚从 7 升级到 Windows 10。该项目使用 .Net Framework 4.0 Client Profile。在 win7 上一切正常,但现在其中一个项目似乎没有加载引用。引用项附近有黄色三角形,哪些不是从同一解决方案引用的项(因此系统和 NuGet 下载的引用未加载)。
资源是解决方案中的另一个项目,其他项目不是。当我打开系统引用的属性选项卡时,Path
字段为空,因此 Resolved
字段是 False
...
此外,在.csproj 文件中似乎一切正常,还有<HintPath>
需要的节点,具有相对(或绝对,如果引用在另一个驱动器上)和正确的现有路径。
另一件奇怪的事情:在对象浏览器中,所有引用都(似乎)加载了:
所以我该怎么做:
最佳答案
我也遇到了这个问题,我花了一些时间才弄明白。问题是 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>
这导致项目被破坏。
要解决此问题 ,将丢失的目录复制到项目(使用旧版本的 Visual Studio/NuGet 或从拥有它的同事那里获取),或者只是简单地从项目文件中删除上述部分。
为获得最佳效果,还请删除:
<RestorePackages>true</RestorePackages>
和
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
从项目文件!
在此处找到有关该主题的更多信息:
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
关于.net - Visual Studio 不加载项目引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32425557/