有没有人知道是否可以在nuspec文件中添加一些内容,以便在通过NuGet将一个包安装到项目的前置或后期构建事件时?
答案 0 :(得分:18)
我认为编辑用户的PostBuildEvent属性是向项目添加构建后操作的错误方法。我相信推荐的方法是将您的自定义操作放入导入到项目文件中的MSBuild目标。从NuGet 2.5开始,如果在包中包含“build”文件夹(与内容和工具处于同一级别)并且它包含{packageid} .targets文件或{packageid} .props文件,NuGet将自动安装程序包时,将“导入”添加到项目文件中。
例如,您有一个名为MyNuGet的包。您创建一个包含以下内容的文件build \ MyNuGet.targets:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="MyNuGetCustomTarget" AfterTargets="Build">
<Message Importance="high" Text="Message from MyNuGetCustomTarget. Configuration: $(Configuration)" />
</Target>
</Project>
这将创建一个自定义目标,该目标配置为在标准Build目标之后运行。 NuGet将处理在安装时插入导入并在卸载时删除它。
答案 1 :(得分:9)
这是从NuGet包中的install.ps1 powershell脚本设置构建事件的一种稍微简洁的方法:
$project.Properties.Item("PostBuildEvent").Value = "your build event here"
答案 2 :(得分:6)
不是.nuspec文件本身,但您可以install.ps1
使用nuspec添加到包中。这就是我正在做的事情(我不知道这是否是最好的方式,但确实有效):
param($installPath, $toolsPath, $package, $project)
$project.Properties | where { $_.Name -eq "PreBuildEvent" } | foreach { $_.Value = "copy `"`n`$(ProjectDir)Web.`$(ConfigurationName).config`" `"`$(ProjectDir)Web.config`"" }