首页 > 解决方案 > Visual Studio Nuget Manager 报告自定义 Nuget 的 .NETStandard2.0 部分“不受支持”

问题描述

我们有一个 .NetStandard2.0 项目,该项目旨在按照此处解释的技术打包到一个 nuget 中:

     https://stackoverflow.com/a/45004898/863651

使用如下所示的 nuspec 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
      <!-- https://stackoverflow.com/a/45004898/863651   we had to resort to employing a seperate nuspec -->
      <!-- file because thats the canonical way to include more than one dlls into the resulting nuget   -->
      <metadata>
        <id>$id$</id>
        <tags>$tags$</tags>
        <owners>$owners$</owners>
        <version>$version$</version>
        <authors>$authors$</authors>
        <description>$description$</description>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <dependencies>
          <group targetFramework=".NETFramework4.5">
          </group>
          <group targetFramework=".NETStandard2.0">
              <dependency id="Newtonsoft.Json" version="12.0.1" exclude="Build,Analyzers" />
          </group>
        </dependencies>
        <frameworkAssemblies>
          <frameworkAssembly assemblyName="System" targetFramework=".NETFramework4.5" />
          <frameworkAssembly assemblyName="Microsoft.CSharp" targetFramework=".NETFramework4.5" />
        </frameworkAssemblies>
      </metadata>
      <files>
        <file src="bin\$config$\netstandard2.0\*.dll;bin\$config$\netstandard2.0\*.pdb;" target="lib\netstandard2.0\" />
      </files>
    </package>

如您所见,有一个部分针对.NetStandard2.0。nuget 包由我们的构建服务器使用以下 msbuild scriptlet 生成:

    <MSBuild Projects="C:\path\to\foo.csproj" Targets="Clean;foo;" Properties="SkipRestoringNugetPackages=true;Configuration=Release;Platform=AnyCPU;" ToolsVersion="15.0" />

生成的 nuget 包将被推送到具有以下规格的 nuget 服务器中:

    NuGet.Server v2.10.3.0

通过 .Net4.8 项目的 Visual Studio 2017 Nuget 包管理器查看包时,边栏上会显示以下内容:

Nuget 包管理器

为什么 .NetStandard2.0 部分显示“不支持”?其他包不显示类似的内容,我在 nuspec 的 xml 中找不到任何拼写错误。

标签: c#visual-studiomsbuildpackagenuget

解决方案


我刚刚发现您的问题可能与 Nuget.Server 包的版本有关,因为您不使用 nuget pack 命令。使用相同的 nuget 包,当我使用 Nuget.server 2.10.3时,它显示不受支持,在我将Nuget.server更新到 3.4.1 后,现在一切正常。让我知道是否有帮助:)

我在本地制作了一个包,当我尝试在 VS 中使用它时一切正常。在我将相同的包部署到 nuget 服务器 2.10.3 后,它显示不支持

因此,如果在部署到服务器后尝试从服务器获取包时出现问题。我认为这是因为您使用的Nuget.Server包太旧了!更新 Nuget.Server 包可以帮助解决此问题。


推荐阅读