VS 2017中的Nuget脚本

VS 2017中的Nuget脚本,nuget,visual-studio-2017,Nuget,Visual Studio 2017,我想为我的VS 2017 NuGet软件包添加自定义安装脚本 问题是,对该机制的支持已被删除。init.ps1仍然可以工作,但它会在每次打开解决方案时运行,这是不可接受的(这可能是一个漫长的过程) 我了解到可以在build dir中定义自定义msbuild目标,但我无法实现这一点,因为它需要操作.nuspec文件以包含这些文件,而我不知道如何在VS 2017中仅使用.csproj文件来实现这一点 但是我不能让它工作,因为它需要操作.nuspec文件来包含这些文件 您可以使用在build目录中添加

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

问题是,对该机制的支持已被删除。init.ps1仍然可以工作,但它会在每次打开解决方案时运行,这是不可接受的(这可能是一个漫长的过程)

我了解到可以在build dir中定义自定义msbuild目标,但我无法实现这一点,因为它需要操作.nuspec文件以包含这些文件,而我不知道如何在VS 2017中仅使用.csproj文件来实现这一点

但是我不能让它工作,因为它需要操作.nuspec文件来包含这些文件

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

我不知道如何在VS2017中仅使用.csproj文件来实现这一点

如您所知,Powershell脚本支持已修改为不再执行安装和卸载脚本,因此我们无法自定义安装nuget软件包时调用的安装脚本,否则,我们需要在visual Studio中覆盖nuget API:(不推荐)

因此,作为一种解决方法,我们可以使用define custom msbuild.targets文件在安装nuget软件包后通过自定义安装脚本实现所需的功能。例如,如果希望自定义install 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>

但是我不能让它工作,因为它需要操作.nuspec文件来包含这些文件

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

我不知道如何在VS2017中仅使用.csproj文件来实现这一点

如您所知,Powershell脚本支持已修改为不再执行安装和卸载脚本,因此我们无法自定义安装nuget软件包时调用的安装脚本,否则,我们需要在visual Studio中覆盖nuget API:(不推荐)

因此,作为一种解决方法,我们可以使用define custom msbuild.targets文件在安装nuget软件包后通过自定义安装脚本实现所需的功能。例如,如果希望自定义install 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>


您试图使用自定义脚本实现什么?引入一个由包p/调用的本机dll。我使用[Conan package manager](Conan.io)来实现它,它将我从所有OS/compiler/arch文件中抽象出来。您使用自定义脚本试图实现什么?引入一个包p/调用的本机dll。我使用[柯南软件包管理器](Conan.io)来实现这一点,它将我从所有OS/compiler/arch文件中抽象出来。是的,这就是我最终要做的。这里的细节:是的,这就是我最后做的。详情如下: