如何向NuGet包中添加图标?

34

我们通过Teamcity托管自己的NuGet服务器。除了指定Web URL (http://...),还有其他方法可以将图标添加到.nuspec文件中吗?

或者在Teamcity中是否有可以托管这些图标的地方?

7个回答

62

4
由于iconUrl已被弃用,因此这个答案现在应该是正确的答案。 - bytedev
1
但是应该使用哪个模式呢?当打包NuGet时,我会收到“icon”不是有效元素的错误提示... - Chris Watts
@ChrisWatts,你可能需要升级你正在使用的nuget.exe来打包。我曾经遇到过同样的问题,但是后来我下载了最新版本https://www.nuget.org/downloads。此外,我将我的图标文件重命名为“icon.png”后运行效果更好。 - J. Horn
1
重要的安全提示:在@target后面加上反斜杠是必要的,否则在使用该包时它将无法工作。 - escape-llc
我们开始这样做了,但现在当他们请求NuGet包时,这会强制将图标文件添加到项目中。有没有办法阻止这种情况发生? - Rudy Scoggins

16

如果您的图标位于GitHub存储库中,可以在GitHub.com上找到它,右键单击并选择“复制图像地址”。然后将其放置在您的.nuspec中。 这对我很有效:

<iconUrl>https://github.com/tcs1896/SharpChecker/blob/master/SharpChecker/SharpChecker/SharpChecker/Icon.png?raw=true</iconUrl>

4
图标网址将被废弃:https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#packageiconurl - Mugen

7

不,使用iconUrl属性是唯一的选择 - 参见NuSpec参考文档

我通常会选择在CDN服务上托管共享图像,而不是在TeamCity上 - CloudFlare提供免费服务。


1
友情提示:请确保URL不需要登录。我将其托管在我的公司维基上,必须将维基页面标记为“公共”。 :) - Vimes
1
由于给定的图标URL已被弃用,因此这不再是可以接受的答案(如果有可能改变)。 - Bartosz

6

以下是文档:

PackageIconUrl已弃用,应使用PackageIcon属性
从NuGet 5.3和Visual Studio 2019版本16.3开始

因此,实现方式是将以下内容添加到.csproj文件中。

<PropertyGroup>
    <PackageIcon>icon.png</PackageIcon>
</PropertyGroup>

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

0

你可以在TeamCity服务器上托管图标,引用Orn Kristjansson在TeamCity to serve static HTML page中的话:

这是一个Tomcat服务器,只需进入安装Teamcity的文件系统,您应该能够找到可以停放一些HTML的位置,然后这些HTML将在Teamcity URL上可用。

因此,将您的图标复制到C:\ ... \ TeamCity \ webapps \ ROOT \中,它们将作为静态文件提供。


-2

我有一个解决方案。 我在Windows 10上已经尝试成功。 如果您必须在没有互联网的离线PC上安装应用程序,则此方法非常有用。

  • 步骤1:
    <iconUrl>标签添加到nuspec文件的内容中。 类似以下内容:

    <metadata> <id>....</id> ... <iconUrl>file://C:\app.ico</iconUrl> ... <copyright>....</copyright> </metadata>

  • 步骤2:从上述nuspec生成nupkg文件

  • 步骤3:从nupkg文件生成exe文件

  • 步骤4:将app.ico文件放置在位置:C:\ app.ico。 您可以根据nuspec文件中的<iconUrl>选择任何位置。 几乎所有Windows PC都有"C"驱动器。 因此,如果您使用“C”驱动器,则在其他PC上安装.exe很舒适。

  • 步骤5:运行exe文件以在PC上安装应用程序。

========= 结果 =============

在 C:\Users\"user_name"\AppData\Local\"app_name" 中,您可以看到应用程序图标出现在已安装的应用程序文件夹中。

希望能对您有所帮助!


-3

您可以将文件添加到nuspec内容文件夹中,并以以下方式指定链接: "file://content/images/icon.ico" 您可以在此处找到更多信息:包含图标和许可证的软件包


2
你试过这个吗?你所提到的页面看起来更像是一个建议而不是实际文档。而且内容文件不是会被添加到你安装包的项目中吗?当然,你可以在之后删除那些文件,但还是... - Michael
1
链接已失效。这似乎是GitHub上相关的问题:https://github.com/NuGet/Home/issues/352 - reduckted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接