Nuget可以在安装期间创建文件夹结构或将文件放在特定的输出目录中吗?

时间:2017-08-07 21:02:02

标签: nuget-package nuspec

我是Nuget包开发的新手,我已成功创建了一些将文件放在项目根级别的简单包。但是,这些包装可以开箱即用。我需要将文件放在目标项目中的特定文件夹中。见下面的例子......

LoginController.cs将被放置在客户端mvc项目的“Controllers”文件夹中。 Login.cshtml将被放置在客户端mvc项目的“Views / Login”文件夹中。

有没有办法实现这个特定的输出?无论何时我安装了一个javascript库,它总是默认为“Scripts”文件夹,所以要么是在Nuget运行时内置,要么是包的发布者告诉它使用该位置。

1 个答案:

答案 0 :(得分:1)

NuGet为您编写PowerShell脚本提供了三个钩子,并将它们包含在您的包中。

  • Init.ps1 - 当首次在解决方案级别安装软件包时运行
  • Install.ps1 - 当它在项目级别安装时运行
  • Uninstall.ps1 - 在卸载软件包时运行

值得注意的是,Visual Studio 2017不再支持Install.ps1Uninstall.ps1

要添加这些文件,您只需更新NuSpec文件,类似于:

<?xml version="1.0"?>
<package >
  <metadata>...</metadata>
  <files>
    <file src="scripts\NugetScripts\Init.ps1" target="tools\Init.ps1" />
  </files>
</package>

您的PowerShell文件需要以下参数声明:

param($installPath, $toolsPath, $package, $project)

从那里,您将能够修改项目并添加/编辑文件到您的内容。这是blog post提供了更多详细信息,但如果您使用Google,网络上还有更多示例。它只取决于你想在脚本中做什么样的事情。