.NET SDK项目Nuget打包:添加工具文件夹?

时间:2018-01-24 23:26:01

标签: nuget .net-core csproj

新的.NET SDK项目允许直接从各种目标生成NuGet包作为构建过程的一部分。

我意识到content不再被允许,但看起来tools仍然是可行的选择。

我的情况是我需要在安装软件包后分发其他内容 - 我知道这不能再通过NuGet完成了,这很好。但是,我想显示一个网页,其中包含下载和安装其他资产的说明。

基本上我想做类似Newtonsoft.Json所做的事情:

enter image description here

我知道您可以使用powershell脚本来显示网页,但是可以通过项目构建将该脚本放入NuGet包中吗?

2 个答案:

答案 0 :(得分:1)

您可以combine PackPackagePath项元数据。

来自StackExchange.Precompilation的示例:

<None Include="*.targets" Pack="true" PackagePath="build" />
<None Include="App.config" Pack="true" PackagePath="tools\$(AssemblyName).exe.config" />

但请注意,安装/卸载powershell脚本are not executed anymore, since NuGet v3。该功能已deprecated,而feature requests将其添加回来已被拒绝。如果你还想试一试,你的.csproj应该包含这样的内容:

<None Include="install.ps1" Pack="true" PackagePath="tools" />

另外值得注意的是:

如果您只需要tools文件夹中的汇编输出(而不是lib),则可以使用IsTool property

答案 1 :(得分:1)

m0sa回答了我问的问题,但是我想在这里添加一些关于我的实际使用场景的附加信息,它显示了某种readme文件。

事实证明,Nuget支持将readme.txt文件添加到Nuget包的根文件夹中,如果找到,则会显示该文件。请注意,该文件必须命名为readme.txt - 不支持其他格式AFAIK。

enter image description here

虽然情况太糟糕,但您无法显示更丰富的内容,至少文本文件会激活点击链接。

要做到这一点:

enter image description here

  • 将readme.txt文件添加到项目的根目录
  • 然后将其添加到您的.csproj文件中:

<ItemGroup> <None Include="readme.txt" Pack="true" PackagePath="." /> </ItemGroup>

导致在将软件包安装为主软件包时显示readme.txt文件。当文件是依赖项时不显示。