首页 > 解决方案 > PackageIcon 和 PackageIconUrl 在 dotnet build 中都不起作用

问题描述

我正在使用 Visual Studio 2017。我有一个项目,我想为它生成一个带有图标的 nuget。如果我使用

...
<PackageIconUrl>http://blabla/icon.png</PackageIconUrl>

我收到以下错误:

error NU5048: The 'PackageIconUrl'/'iconUrl' element is deprecated. Consider using the 
'PackageIcon'/'icon' element instead. Learn more at https://aka.ms/deprecateIconUrl 
[D:\myproject.csproj]

好的,所以我将我的项目更改为:

...
    <PackageIcon>core.png</PackageIcon>
...
    <Content Include="..\Shared\core.png" Link="core.png" Pack="true" PackagePath="\" >
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>

当我现在构建我的项目(dotnet build Myproject.csproj)时,我没有收到任何编译错误。但是,当我想在“Nuget Package explorer”中查看生成的 nupkg 时。我得到错误:

The element 'metadata' in namespace 'http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd' 
has invalid child elment 'icon' in namespace 'http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd'.
List of possible elements expected : 'contentFiles, desription, licenseUrl, projectUrl, language, 
releaseNotes, frameworkAssemblies, summary, iconUrl, packageTypes, dependencies, copyright, 
developmentDependency, repositoru, tags, references, title, serviceable' in namespace 
'http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd'.

(所以生成的嵌入式 nuspec 似乎有一个错误的 xml 命名空间——我不知道如何让它生成新的命名空间)这是 Catch-22。因此,似乎唯一的选择是将图标排除在外。

(我也有visual studio 2019,最近安装了.net core 3.0.100 SDK)

标签: c#.netvisual-studiomsbuildnuget

解决方案


<iconUrl>/<PackageIconUrl><icon>/的移动<PackageIcon>是相当新的。虽然 nuget.org 支持解析使用<icon>而不是<iconUrl>的包,但其他一些包服务器还不支持。

听起来你只是在用 NuGet 包资源管理器浏览一个目录,所以原因可能是这还不明白<icon>

虽然<iconUrl>已弃用,但我发现它仍然可以在 nuget.org 上运行,因此您应该能够继续使用它,直到其他工具赶上。或者,如果您实际上并不关心浏览存储在本地目录中的包而只关心 nuget.org,那么您可以开始使用<icon>.

你甚至可以同时使用两者——我还没有检查过。


推荐阅读