我是Nuget包开发的新手,我已成功创建了一些将文件放在项目根级别的简单包。但是,这些包装可以开箱即用。我需要将文件放在目标项目中的特定文件夹中。见下面的例子......
LoginController.cs将被放置在客户端mvc项目的“Controllers”文件夹中。 Login.cshtml将被放置在客户端mvc项目的“Views / Login”文件夹中。
有没有办法实现这个特定的输出?无论何时我安装了一个javascript库,它总是默认为“Scripts”文件夹,所以要么是在Nuget运行时内置,要么是包的发布者告诉它使用该位置。
答案 0 :(得分:1)
NuGet为您编写PowerShell脚本提供了三个钩子,并将它们包含在您的包中。
Init.ps1
- 当首次在解决方案级别安装软件包时运行Install.ps1
- 当它在项目级别安装时运行Uninstall.ps1
- 在卸载软件包时运行值得注意的是,Visual Studio 2017不再支持Install.ps1
和Uninstall.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,网络上还有更多示例。它只取决于你想在脚本中做什么样的事情。