C# PackageIcon和PackageIconUrl都不能在dotnet构建中工作

C# PackageIcon和PackageIconUrl都不能在dotnet构建中工作,c#,.net,visual-studio,msbuild,nuget,C#,.net,Visual Studio,Msbuild,Nuget,我正在使用visual studio 2017。我有一个项目,我想为其生成一个带有图标的nuget。 如果我使用 ... <PackageIconUrl>http://blabla/icon.png</PackageIconUrl> 很好,所以我将我的项目更改为: ... <PackageIcon>core.png</PackageIcon> ... <Content Include="..\Shared\core.png"

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

...
<PackageIconUrl>http://blabla/icon.png</PackageIconUrl>
很好,所以我将我的项目更改为:

...
    <PackageIcon>core.png</PackageIcon>
...
    <Content Include="..\Shared\core.png" Link="core.png" Pack="true" PackagePath="\" >
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
(因此,生成的嵌入式nuspec似乎有一个错误的xml名称空间——我不知道如何让它生成新的名称空间)这是一个第22条军规。 因此,似乎唯一的选择是不使用图标

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

/
迁移到
/
是相当新的。虽然nuget.org支持解析使用
而不是
的包,但其他一些包服务器还不支持

听起来你只是在用NuGet Package Explorer浏览一个目录,所以原因可能是它还不理解

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


您甚至可以同时使用这两种功能—我还没有检查。

至少我认为您现在可以随意使用
PackageIconUrl
,正如上文提到的canton7,这是一项全新的举措。你可以认为这是一种提醒。 对于最新的VS2019发行版版本16.3.3,默认情况下,其项目模板仍然支持
PackageIconUrl
。对于
.net core
.net standard
类库项目,如果我们
右键单击project=>Package选项卡
,我们可以看到:


它相当于
http://xxx/icon.png
在xx.csproj中,因此我认为您可以忽略该警告或使用
NU5048

您需要确保图标是软件包的一部分。您可以通过解压缩nupkg文件来验证它是否在那里

从a:


...
icon.png
...
...
...
还(来自):

PackageIconUrl已被弃用,取而代之的是PackageIcon。但是,为了获得最佳的底层体验,除了PackageIcon之外,还应该指定PackageIconUrl


还有一个带有图标的示例项目:

如何查看生成的nupkg?您是将其上载到nuget.org,还是将其托管在某个自定义的nuget package feed/local目录中?我只需在磁盘上本地双击生成的nupkg。@Willyvanderiessche Hi friend,是否有此问题的更新?如果Cango7的答案有助于解决你的难题,你可以考虑把它标记为答案。这只是一个提醒:)你找到解决办法了吗。我也面临同样的问题。一切都像教程中提到的那样进行了设置,但仍然没有图标。-我浏览了在我的磁盘上生成的nupkg。-IMHO生成的nupkg完全是错误的。它使用“2013”名称空间,如果能够做到这一点对您很重要,那么它应该使用,最好继续使用
,直到工具支持
。不要被弃用警告吓跑-
在nuget.org上仍然有效!弃用消息不是警告,而是错误。我有可能解释这一点的错误警告。即使在我的csproj中有
true
dotnet pack
仍然将其报告为警告。我现在添加了true NU5048,似乎解决了问题。像这样,我可以使用packageUrl。
...
    <PackageIcon>core.png</PackageIcon>
...
    <Content Include="..\Shared\core.png" Link="core.png" Pack="true" PackagePath="\" >
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
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'.
<PropertyGroup>
    ...
    <PackageIcon>icon.png</PackageIcon>
    ...
</PropertyGroup>

<ItemGroup>
    ...
    <None Include="images\icon.png" Pack="true" PackagePath="\"/>
    ...
</ItemGroup>