如何通过复制恢复或安装 Nuget 包然后粘贴到 *.csproj 文件?

How to restore or install Nuget packages from copy then paste to *.csproj file?

我正在使用 Microsoft Visual Studio Community 2019 Preview - Version 16.8.0 Preview 2.0,.NET Core 5.0.100-preview.8.20417.9,ASP.NET Core 5.0-preview Web API。 原始文件 *.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

然后我添加(从其他项目手动复制一部分)

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AWSSDK.Polly" Version="3.5.0.5" />
    <PackageReference Include="ChilkatNativeLib" Version="9.5.0.83" />
    <PackageReference Include="HtmlAgilityPack" Version="1.11.24" />
    <PackageReference Include="HtmlAgilityPack.NetCore" Version="1.5.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.0-preview.8.20414.8" />
    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.0-preview.8.20414.8" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="5.0.0-preview.8.20414.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.0-preview.8.20407.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-preview.8.20407.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-preview.8.20407.4">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Identity.Core" Version="5.0.0-preview.8.20414.8" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="5.0.0-preview.8.20419.1" />
    <PackageReference Include="MimeKit" Version="2.9.1" />
    <PackageReference Include="NAudio" Version="1.10.0" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
    <PackageReference Include="NUnit" Version="3.12.0" />
    <PackageReference Include="RestSharp" Version="106.11.5-alpha.0.18" />
    <PackageReference Include="SendGrid" Version="9.21.0" />
    <PackageReference Include="Serilog" Version="2.10.0-dev-01240" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.5.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="5.5.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.5.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.5.1" />

    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />

    <PackageReference Include="System.ServiceModel.Syndication" Version="5.0.0-preview.8.20407.11" />
    <PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0-preview.8.20407.11" />

  </ItemGroup>
</Project>

那我运行

dotnet restore

但没有成功。

如何通过复制然后粘贴到 *.csproj 文件恢复或安装 Nuget 包?

How to restore or install Nuget packages from copy then paste to *.csproj file?

我认为这是 Visual Studio Preview 16.8 with Net Core 5.0 的问题。

首先update-package -reinstall命令不能用于Net Core项目,它用于packages.config nuget管理格式的Net Framework项目。

对于 Net Core 项目,您只需单击构建即可恢复 nuget 包。

实际上,当您在 Net Core 5.0 项目上安装 nuget 包时,它会在全局 nuget 文件夹中成功恢复包。

您可以先删除C:\Users\xxx(current user)\.nuget\packages下的所有nuget包,然后重建您的项目。

包将全部恢复到该文件夹​​下。

============================================= =======================

但是,主要问题是:

对于 Net Core 5.0,nuget 包没有名称和参考路径,但可以在没有任何警告和错误的情况下恢复和构建。

而在 Net Core 3.1, 中它有名称和完整的参考路径以便 VS 可以找到它。

这就是黄色三角形出现的原因。也不确定这种行为是否会影响你的发育。

名称路径是系统给定的,无法更改。

您可以尝试将您的项目从Net Core 5.0更改为Net Core 3.1,我相信大多数黄色三角形都会消失。

既然是问题,I have reported it to our DC Forum.

如果我没有详细描述问题,您可以投票或添加任何评论。也希望团队检查问题,尽快解决问题。