【问题标题】:Visual studio 2015 project missing all referencesVisual Studio 2015 项目缺少所有参考
【发布时间】:2016-02-15 03:20:34
【问题描述】:

从今天开始,一个WPF项目,属于一个有20个项目的解决方案,把我所有的引用设置为missing

我刚刚检查了 MS 建议和 Stackoverflow 上的其他答案,但没有一个有效...我试图从 SVN 重新获得解决方案,但没有运气,其他同事没有遇到这个问题。 我还尝试删除并重新添加引用(例如 System.Xml)。 但是没有办法让它工作......

有什么建议吗? 谢谢

更新 #1

这是csproj

 <ItemGroup>
<Reference Include="Catel.Core, Version=4.2.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\Catel.Core.4.2.0\lib\net40\Catel.Core.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Catel.Extensions.Controls, Version=4.2.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\Catel.Extensions.Controls.4.2.0\lib\net40\Catel.Extensions.Controls.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Catel.Extensions.FluentValidation, Version=4.2.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\Catel.Extensions.FluentValidation.4.2.0\lib\net40\Catel.Extensions.FluentValidation.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Catel.Fody.Attributes, Version=2.8.0.0, Culture=neutral, PublicKeyToken=1c8163524cbe02e6, processorArchitecture=MSIL">
  <HintPath>..\packages\Catel.Fody.2.8.0\lib\portable-net4+sl4+wp7+win8+wpa81+MonoAndroid14+MonoTouch40\Catel.Fody.Attributes.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Catel.MVVM, Version=4.2.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\Catel.MVVM.4.2.0\lib\net40\Catel.MVVM.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="MethodTimer, Version=1.15.7.0, Culture=neutral, PublicKeyToken=cb1364609f40a1dc, processorArchitecture=MSIL">
  <HintPath>..\packages\MethodTimer.Fody.1.15.7.0\Lib\portable-net4+sl5+wp8+win8+wpa81+MonoAndroid16+MonoTouch40\MethodTimer.dll</HintPath>
  <Private>False</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="ServiceStack">
  <HintPath>..\packages\ServiceStack.4.0.46\lib\net40\ServiceStack.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="ServiceStack.Client, Version=4.0.46.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\ServiceStack.Client.4.0.46\lib\net40\ServiceStack.Client.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="ServiceStack.Common">
  <HintPath>..\packages\ServiceStack.Common.4.0.46\lib\net40\ServiceStack.Common.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="ServiceStack.Interfaces, Version=4.0.0.0, Culture=neutral, PublicKeyToken=e06fbc6124f57c43, processorArchitecture=MSIL">
  <HintPath>..\packages\ServiceStack.Interfaces.4.0.46\lib\portable-wp80+sl5+net40+win8+monotouch+monoandroid+xamarin.ios10\ServiceStack.Interfaces.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="ServiceStack.Text, Version=4.0.46.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\ServiceStack.Text.4.0.46\lib\net40\ServiceStack.Text.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO, Version=2.6.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Net" />
<Reference Include="System.Runtime, Version=2.6.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Threading.Tasks, Version=2.6.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Catel.MVVM.4.2.0\lib\net40\System.Windows.Interactivity.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="Telerik.Windows.Controls, Version=2015.2.728.40, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
  <HintPath>..\packages\Telerik.Windows.Controls.for.Wpf.40.Xaml.2015.2.728\lib\net40\Telerik.Windows.Controls.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Telerik.Windows.Controls.GridView, Version=2015.2.728.40, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
  <HintPath>..\packages\Telerik.Windows.Controls.GridView.for.Wpf.40.Xaml.2015.2.728\lib\net40\Telerik.Windows.Controls.GridView.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Telerik.Windows.Controls.Input, Version=2015.2.728.40, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
  <HintPath>..\packages\Telerik.Windows.Controls.Input.for.Wpf.40.Xaml.2015.2.728\lib\net40\Telerik.Windows.Controls.Input.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Telerik.Windows.Controls.Navigation, Version=2015.2.728.40, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
  <HintPath>..\packages\Telerik.Windows.Controls.Navigation.for.Wpf.40.Xaml.2015.2.728\lib\net40\Telerik.Windows.Controls.Navigation.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Telerik.Windows.Data, Version=2015.2.728.40, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
  <HintPath>..\packages\Telerik.Windows.Data.for.Wpf.40.Xaml.2015.2.728\lib\net40\Telerik.Windows.Data.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="UIAutomationProvider" />
<Reference Include="UIAutomationTypes" />
<Reference Include="WindowsBase" />

是的,我使用 Nuget,其他 19 个指向相同的程序集...没有任何内容被移动

更新 #2

由于我无法继续,我从同事那里复制了该项目,现在它可以工作了....认为文件系统出了问题...比较了解决方案,它们是相同的

【问题讨论】:

  • 能否粘贴一下.csproj文件的相关部分?
  • bin 和 obj 文件夹是否为空或丢失?你试过重建吗?你用 Nuget 吗?
  • 可能您无法访问包含库的文件夹,因为它们不存在或您没有权限,可能有人更改了它的路径,并且它们不再为您工作,请检查在哪里csproj 会寻找它们,如果你可以在那里自己找到它们
  • 它缺少对System 之类的引用的事实似乎表明这不仅仅是一个简单的丢失文件夹。
  • 其他项目工作正常...

标签: visual-studio visual-studio-2015


【解决方案1】:

这个问题的解决办法是。

每当您将项目导入 VS 2015 时,它都会修改您的 .csproj。所以,为了修复它。右键单击 .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>

然后构建您的解决方案,它应该可以工作。

【讨论】:

  • 对于不知道如何找到.csproj文件进行编辑的任何人,您可以右键单击您的项目并选择Unload Project,之后您将能够编辑.csproj文件
  • 您也可以导航到保存项目的目录,然后右键单击 .csproj 并进行编辑。
  • 谢谢,你节省了我的时间。
  • 是的!经过多次故障排除后,这终于让我可以添加引用而不会出现黄色三角形 - 谢谢!
  • 有谁知道微软为什么要这么做?这让我非常头疼!谢谢。
【解决方案2】:

在解决方案的根目录中,删除/packages/文件夹内的所有内容,然后重新构建。

【讨论】:

  • 对我来说效果很好。所有软件包都是从 TFS 下载并在我的本地损坏的。应用此解决方案后,它被重建,没有任何问题。谢谢@mmcrae。
  • 我刚刚删除了我的整个包文件夹,但它也有效
【解决方案3】:

它可以帮助强制重建 nuget 包。转到 nuget 控制台并使用以下命令:(TOOLS > Options > Package Manager > Package Manager Conbsole)

Update-Package -reinstall -ProjectName "MyProject" -safe

safe 参数实际上不会更新软件包,而只会重新安装它们。如果这没有帮助,您可以尝试实际更新它们(但请确保您在某处拥有该项目的副本,以防万一。)

Update-Package -reinstall -ProjectName "MyProject"

要强制只更新一个包,请使用:

Update-Package -id Microsoft.Package.Name -ProjectName "MyProject"

【讨论】:

  • 这个解决方案也对我有用很多次,证明总有不止一种方法可以实现您的目标
【解决方案4】:

我曾经遇到过这种情况,原因是 .targets 导入损坏。检查您是否不小心启用了 nuget 包还原(包括 .targets 文件),然后删除了 .nuget 目录。

【讨论】:

  • 我遇到了类似的问题......奇怪的是,在更新我的 nuget 包后,所有引用都恢复了
  • @jan-seins - “更新我的 nuget 包”到底是什么意思?你在 VS 中做了什么?
  • @mmcrae - 我刚刚继续工具 > nuget 包管理器 > 用于解决方案的 nuget 包。在更新下,我有一个 System.Data.SQLite 的未决更新。在我更新它之后,所有的引用都被恢复了。我并不是说这是一个解决方案。这就是它对我的工作方式
【解决方案5】:

我有类似的问题。对我有用的解决方案是弹出解决方案的 nuget 包管理器并刷新包。

另一个案例涉及缺少包和解决方案的 nuget 包管理器显示需要安装的更新和依赖项,这就是修复。

另一种情况与上面所指出的完全一样 - 删除包文件夹修复它。

手动编辑项目是一种选择,但如果你戳到不应该的地方,你的项目可能无法打开。如果可以,请避免这样做是我的意见。

【讨论】:

    【解决方案6】:

    我刚刚在 VS2015 的一个包含大约 20 个项目的解决方案中体验到了这一点。只有一个项目受到影响,它丢失了所有引用,包括对标准 .NET 程序集的引用。

    我能解决的唯一方法是切换到不同的 GIT 分支,然后返回,这解决了问题,现在一切正常。

    【讨论】:

      【解决方案7】:

      我在 VS2015 中的一个包含大约 10 个项目的解决方案中也体验到了这一点。只有一个项目(主要 MVC 项目)受到影响,并且丢失了所有引用,包括对标准 .NET 程序集的引用。

      问题出在我的 web.config 中。我注释了一些行,导致 xml 文件无效。

      【讨论】:

        【解决方案8】:

        如果您错过了 nuget packages 文件夹中的 .targets 文件,则可能会出现此错误。就我而言,它是 packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets

        通常在我将包添加到 git 存储库(常见的 .gitignore 文件忽略任何地方的构建文件夹)并在另一台计算机上结帐时会发生这种情况。

        提示:您可以修改.gitignore 文件以包含packages 文件夹中的所有文件。将这些行添加到底部:

        # Include all files in NuGet packages directory
        !/packages/**/
        

        【讨论】:

          【解决方案9】:

          对我来说,我错误地从 .csproj 文件中删除了以下行:

          <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
          

          所以我关闭了 Visual Studio。打开myprojectname.csproj 文件并添加该行。 然后我重新打开了解决方案,这样我就可以解决我的问题了。

          【讨论】:

            【解决方案10】:

            卸载项目,然后编辑项目

            查找以下内容并删除。

            此项目引用此计算机上缺少的 NuGet 包。启用 NuGet 包还原以下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。丢失的文件是 {0}。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-01-18
              • 1970-01-01
              • 1970-01-01
              • 2017-06-11
              • 1970-01-01
              相关资源
              最近更新 更多