.Net 2015带有黄色三角形的参考,用于便携式库上的Nuget包

时间:2016-05-13 11:25:36

标签: c# nuget portable-class-library nuget-package-restore

我知道之前已经问过这个问题,但是没有一个建议的决议对我有用,所以我会再次提出这个问题并希望得到新的建议。我读过的一些文章:

VS .Net References with yellow triangle Why do I get a warning icon when I add a reference to an MEF plugin project? The exclamation mark in the yellow triangle icon (inside Solution Explorer)

我的5个可移植库肯定都是针对相同的框架(我已经检查并重新检查,因为这是其中一个建议!):

  • .NET Framework 4.5
  • ASP.NET Core 1.0
  • Windows Phone 8
  • Windows Phone 8.1
  • Windows Phone Silverlight 8
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS(经典)

到目前为止我尝试过/做过的事情:

  • 从所有项目中手动删除Nuget包引用。
  • 检查每个.csproj并确保确实删除了引用。
  • 删除解决方案根目录中的packages文件夹
  • 尝试通过控制台管理器重新安装所有软件包。没有错误,但仍然显示黄色三角形。
  • 试图通过Nuget管理器重新安装所有软件包。没有错误,但仍然显示黄色三角形。

以下是我的一个便携式类库的部分:

<ItemGroup>
    <Reference Include="crypto">
      <HintPath>..\..\..\packages\Portable.BouncyCastle.1.8.1\lib\portable-
        net4+sl5+wp8+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10
        \crypto.dll
      </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json">
  <HintPath>..\..\..\packages\Newtonsoft.Json.8.0.3\lib\portable-
      net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Extensions">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Primitives">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
  </HintPath>
  <Private>True</Private>
</Reference>

我的物理项目路径是:

C:\ XXXX \ XXXXXX \ XXXXX-XXXXXXX

所以以bouncycastle为例,基于上述情况,我假设完整路径看起来像这样:

C:\ XXXX \ XXXXXX \ XXXXX-XXXXXXX \包\ Portable.BouncyCastle.1.8.1 \ lib中\便携式NET4 + SL5 + WP8 + win8的+ wpa81 + MonoTouch10 + MonoAndroid10 + xamarinmac20 + xamarinios10 \ crypto.dll < / p>

这似乎只是我的便携式库上的问题,因为我在我的uwp解决方案上重新安装了所有Nuget软件包,它们都按预期工作。令人沮丧的是,我的项目仍位于其原始位置,运作良好。我已经卸载了软件包并重新安装了它们,所有内容都按预期工作了100%。

有没有人有任何其他建议?

7 个答案:

答案 0 :(得分:58)

如果您在安装过程中未收到任何输出错误,则构建/重建时没有警告。简单地:

  
      
  1. 重新启动Visual Studio
  2.   

答案 1 :(得分:22)

我弄清楚问题是什么!

正如@Gusman所说,我关掉了警告开关。一旦我打开它,我的便携式项目显示以下内容:

Warning: IDE0006 - Error encountered while loading the project. Some project
features, such as full solution analysis for the failed project and projects
that depend on it, have been disabled

它提供了本文Diagnosing Project System Build Errors

的链接

按照提供的说明并检查以designtime.log结尾的众多文件后,我注意到所有文件都FAIL引用Nuget包,但如上所述,我已删除所有这些来自我的各个项目,所以我去重新检查其中一个.csproj,这是我发现问题的时候!

实际上有两个问题:

  1. Microsoft.BCL.Build的{​​{1}}引用无法正常删除!!

  2. 重新添加Nuget Nuget包时,它未在Microsoft.BCL.Build

  3. 中正确设置路径

    以下是故障示例:

    .csproj

    正如您所看到的那样,第一行即<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21 \build\Microsoft.Bcl.Build.targets" Condition="Exists ('..\..\..\packages\Microsoft.Bcl.Build.1.0.21 \build\Microsoft.Bcl.Build.targets')" /> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use 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('..\packages\Microsoft.Bcl.Build.1.0.21\build\ Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format ('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21 \build\Microsoft.Bcl.Build.targets'))" /> <Error Condition="!Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.21\build\ Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format ('$(ErrorText)', '..\..\..\packages\Microsoft.Bcl.Build.1.0.21\ build\Microsoft.Bcl.Build.targets'))" /> </Target> 不应该存在,但即使<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21>已被移除,它仍会保留在项目中。

    如果你需要它,请保留并修复第二个条目,因为这就是我所做的。如您所见,有两个条目检查Microsoft.BCL.Build Microsoft.BCL.Build包。就我而言,我只是删除了第一个:

    Nuget

    并保留了这一个:

    `<Error Condition="!Exists('..\packages\`
    

    完成`<Error Condition="!Exists('..\..\..\packages\` 的编辑后,我在我的解决方案中重新加载项目,不仅解决了Microsoft.BCL.Build问题,还解决了用黄色三角标记的所有其他Nuget依赖项。

    在此过程中大部分时间都浪费了,但希望这会对其他人有所帮助。

答案 2 :(得分:5)

我在vs2017的解决方案中遇到了同样的问题,其中有2个项目用于框架DotNetCoreApp 1.1。 全部我的包裹显示惊叹号/黄色三角形。一旦我以管理员身份运行vs2017,就解决了。

答案 3 :(得分:2)

I had a same issue when I cloned a project to my laptop from GitHub. There are yellow triangles displaying on my EntityFramework and AspNet.Identity as well. What I did to solve the issue in my case was to remove the packages folder (which contains Nuget packages) and restore packages once I opened the project. As a result, those warnings were switched off after I restarted VS2017.

答案 4 :(得分:1)

您可以在此处查看我对相关主题的答案,因为特别是如果您有一个生产环境项目,则此主题的答案是做事情的危险方式:https://stackoverflow.com/a/59704420/7969733

仅出于文档目的此问题的新手 这,你会记住我:D

如果您转到:工具> NuGet管理员>配置。你呢 勾选“允许nuget ....”和“自动检查....”。

唯一要做的就是单击按钮“清除 所有NuGet缓存”

就是这样,您不必编辑可能会很危险的手动想法, 相信我,我曾经需要做一些比这里描述的步骤 很多时间,并尝试超过5步的正式Microsoft 有关该问题的文档,您可以在此处进行检查: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

但是仅清理缓存即可解决所有问题

答案 5 :(得分:0)

  1. 将项目文件复制到另一个文件夹
  2. 使用解决方案项目删除文件夹
  3. 创建同名的新项目
  4. 将文件从步骤1复制到新项目
  5. 还原包

答案 6 :(得分:0)

我知道这是一个老帖子,但最近我在改变我的膝盖后遭遇了这个警告错误。我在TFS(2017年的视觉工作室)中获得了一个好处,突然我的所有参考文献都有一个警告图标。我发现为我工作的是:转到对象浏览器,然后选择组合框“所有组件”,最后选择您的框架。对我来说,它就像一个迷人的工作。

Resolve warning references error