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

Thi*_*rry 28 c# nuget portable-class-library nuget-package-restore

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

带有黄色三角形的VS .Net参考 当我添加对MEF插件项目的引用时,为什么会出现警告图标? 黄色三角形图标中的感叹号(解决方案资源管理器中)

我的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>
Run Code Online (Sandbox Code Playgroud)

我的物理项目路径是:

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

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

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

rob*_*pim 64

如果在安装期间没有收到任何输出错误,则构建/重建时没有警告.只是:

  1. 重新启动Visual Studio

  • 你是开玩笑的开玩笑吧...我整个下午一直在追逐核心1.0问题,当我重新启动VS时,我所有的裁判都很好...... (17认同)
  • @Rikon很抱歉听到你的运气!无法计算我在同一条船上的次数...我最近习惯的几种习惯是经常关闭标签和环境.防止这样的头部刮擦,我发现我的机器运行得更好. (4认同)
  • 刚刚帮我使用BuildBundlerMinifier包 (2认同)
  • 仍然适用于VS2019,谢谢,您节省了我几个小时。 (2认同)

Thi*_*rry 23

我弄清楚问题是什么!

正如@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
Run Code Online (Sandbox Code Playgroud)

它提供了本文的链接诊断项目系统构建错误

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

实际上有两个问题:

  1. Microsoft.BCL.Build参考Nuget不得到正确删除!

  2. 重新添加Microsoft.BCL.BuildNuget包时,它不会正确设置路径.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>
Run Code Online (Sandbox Code Playgroud)

你可以看到第一行即<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21>不应该在那里,但它似乎仍然留在项目中,即使Microsoft.BCL.Build已被删除.

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

`<Error Condition="!Exists('..\packages\`
Run Code Online (Sandbox Code Playgroud)

保持这一个:

`<Error Condition="!Exists('..\..\..\packages\`
Run Code Online (Sandbox Code Playgroud)

编辑完成后.csproj,我在我的解决方案中重新加载了项目,不仅解决了Microsoft.BCL.Build问题,还解决了用黄色三角标记的所有其他Nuget依赖项.

在这一天浪费了我的大部分时间,但希望这将有助于其他人.


R. *_*sen 7

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