我想为我的VS 2017 NuGet包添加自定义安装脚本。
问题是,删除了对install.ps1/uninstall.ps1机制的支持。 init.ps1仍然有效,但每次打开解决方案时都会运行,这是不可接受的(这是一个可能很长的过程)。
我读过可以在构建目录中定义自定义的msbuild目标,但是我无法让它工作,因为它需要操作.nuspec文件来包含文件,我在VS 2017中看不到如何做到这一点只有.csproj文件。
答案 0 :(得分:2)
但是我无法让它工作,因为它需要操作.nuspec文件来包含文件
您可以使用NuGet Package Explorer在.targets
目录中添加自定义msbuild build
,而无需操作.nuspec文件:
我无法看到如何在VS 2017中使用.csproj文件。
如您所知, Powershell脚本支持已被修改为不再执行安装和卸载脚本,因此我们无法自定义安装nuget包时调用的脚本,否则,我们需要覆盖Visual Studio中的NuGet API:IVsPackageInstaller interface(不推荐)。
因此,作为一种解决方法,我们可以使用define custom msbuild .targets文件来实现安装nuget包后自定义安装脚本所要实现的目标。例如,您希望自定义安装nuget脚本更改默认的dll输出,您可以使用带有复制任务的.target文件来实现它,您可以创建包含以下内容的文件build \ MyNuGet.targets:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MySourceFiles Include="$(ProjectDir)MyFolder\**" />
</ItemGroup>
<Target Name="MyNuGetCustomTarget" AfterTargets="Build">
<Copy SourceFiles="@(MySourceFiles)" DestinationFolder="$(OutDir)" />
</Target>
</Project>