我在visual studio 2013中设置了一个解决方案/团队项目,并且有一段时间为.NET Framework 4.0安装了一个可用的NuGet Microsoft.Bcl异步包。今天打开项目时,找不到所有默认的.NET系统库引用,它们旁边只有一个警告符号。在构建项目时,我有49条警告,都说“引用的组件'System.X'找不到。或者找不到'引用的组件'Microsoft.X'。然而,对解决方案中其他项目的引用仍然完好无损。
如果有任何意义,我一直在使用内置的版本控制系统来保留我的代码备份,并使用相同的配置从我的其他电脑访问它。
查看有关类似问题的stackoverflow上的其他问题,人们似乎指向NuGet可能导致问题,但没有任何解决方案似乎对我有用。我已经尝试过使用文件浏览器和Framework选项卡删除和重新添加引用的明显解决方案,但到目前为止都没有。
我当前无法编译项目,因为我收到此警告,无疑是由于缺少引用而造成的。
错误31无法从程序集C:\ Users ... \ Visual Studio 2013 \ Projects \ AlgorithmToolsTFVC \ AlgorithmToolsSuite \ AlgorithmTools \ packages \ Microsoft.Bcl.Build.1.0.14 \ tools加载“EnsureBindingRedirects”任务\ Microsoft.Bcl.Build.Tasks.dll。无法加载文件或程序集'file:/// C:\ Users ... \ Visual Studio 2013 \ Projects \ AlgorithmToolsTFVC \ AlgorithmToolsSuite \ AlgorithmTools \ packages \ Microsoft.Bcl.Build.1.0.14 \ tools \ Microsoft.Bcl。 Build.Tasks.dll'或其依赖项之一。该系统找不到指定的文件。确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类。 AlgorithmTools
答案 0 :(得分:27)
可能的解决方案:如果您在大多数系统引用上看到黄色三角形,请编辑.csproj
文件(备份以防万一) ,滚动到文件的底部,然后删除这些行...
<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>
与许多其他人一样,我一直在源代码管理之外使用集中式.packages
文件夹。这是通过在NuGet.Config
文件中包含以下行来完成的:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="..\..\..\.packages" />
</config>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
实现此目的的一个步骤是检查项目文件是否不再使用旧的NuGet.targets
文件(.nuget
解决方案文件夹中的唯一文件应为NuGet.Config
)
当NuGet认为它应该检查NuGet.targets
文件时,它不存在,它也将无法检查基本引用(例如System.Core
,WindowsBase
和PresentationCore
)
更新: 有关如何彻底取消解决方案中的.nuget
文件夹,请参阅this相关主题/答案!它可以在AppData中的用户配置文件级别设置。
答案 1 :(得分:1)
我能够通过首先在解决方案中对所有NuGet包运行更新,然后删除并重新添加对包中包含或覆盖的库的引用来解决此问题。
答案 2 :(得分:0)
刚遇到同样的问题。 我的原因是Nuget包中的所有文件突然变成0字节大小。我的意思是DLL,nupkg文件等。
我重新安装了这个包,它对我有用。
答案 3 :(得分:0)
我在团队基础服务器上的项目遇到了完全相同的问题。我有错误说“EnsureBindingRedirects”任务无法从程序集C:\ Users ... \ Visual Studio ...中加载“和许多警告说”引用的组件'Microsoft.X“
解决方案非常简单。我所要做的就是将整个项目文件夹复制到另一个位置,然后才能工作。
答案 4 :(得分:0)
有类似的问题。在浪费2.5小时试图找到解决方案之后,我只是通过在VS 2013中打开项目来修复它,从而启用NuGet包恢复和重建。立即修复,现在它在VS 2015中工作就好了。