Tre*_*ley 15 build-events nuget-package
有没有人知道是否可以在nuspec文件中添加一些内容,以便在通过NuGet将一个包安装到项目的前置或后置构建事件时?
Mik*_*ray 19
我认为编辑用户的PostBuildEvent属性是向项目添加后构建操作的错误方法.我相信推荐的方法是将您的自定义操作放入导入到项目文件中的MSBuild目标.从NuGet 2.5开始,如果你的包中包含一个'build'文件夹(与内容和工具处于同一级别)并且它包含一个{packageid} .targets文件或{packageid} .props文件,NuGet将自动添加一个Import安装程序包时到项目文件.
例如,您有一个名为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>
Run Code Online (Sandbox Code Playgroud)
这将创建一个自定义目标,该目标配置为在标准Build目标之后运行.NuGet将处理在安装时插入Import并在卸载时删除它.
这是从NuGet包中的install.ps1 powershell脚本设置构建事件的一种稍微简洁的方法:
$project.Properties.Item("PostBuildEvent").Value = "your build event here"
Run Code Online (Sandbox Code Playgroud)
不是.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`"" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5029 次 |
| 最近记录: |