在VS 2017中编辑Nuget脚本

时间:2017-11-07 19:46:12

标签: nuget visual-studio-2017

我想为我的VS 2017 NuGet包添加自定义安装脚本。

问题是,删除了对install.ps1/uninstall.ps1机制的支持。 init.ps1仍然有效,但每次打开解决方案时都会运行,这是不可接受的(这是一个可能很长的过程)。

我读过可以在构建目录中定义自定义的msbuild目标,但是我无法让它工作,因为它需要操作.nuspec文件来包含文件,我在VS 2017中看不到如何做到这一点只有.csproj文件。

1 个答案:

答案 0 :(得分:2)

  

但是我无法让它工作,因为它需要操作.nuspec文件来包含文件

您可以使用NuGet Package Explorer.targets目录中添加自定义msbuild build,而无需操作.nuspec文件:

enter image description here

  

我无法看到如何在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>