在不同的文件夹中恢复 nuget 包

Restore nuget package in different folder

我们有一些项目(插件)在多个项目中使用,这些项目的输出将复制到目标项目中的特定文件夹(插件文件夹)。 我们使用 Visual studio 2019 Pack 选项打包项目,然后将 npkg 文件推送到本地 NuGet 服务器以供进一步使用。

问题是当我们想要获取这些包时,包管理器应该将 lib 文件放在 Plugins 文件夹中,但不幸的是,包管理器将它们提取到根文件夹 (bin) 中。

我的问题是:如何配置 nuspec 文件以强制包管理器提取到正确的文件夹,我可以使用 visual studio 来完成还是必须手动创建 nuspec 文件。

你应该使用<packages_id>.props文件来实现它。

  1. 在您的 lib 项目的构建文件夹下创建一个名为 <packages_id>.props 的文件。

    您应该注意,如果您的 nupkg 文件名为 Plugins.1.0.0.nupkg,您应该将此文件命名为 Plugins.props,这样它才能正常工作。

  2. 将这些添加到 Plugins.props 文件:

    <Project>
    
        <Target Name="CopyFiles" BeforeTargets="Build">
            <ItemGroup>
                <File Include="$(MSBuildThisFileDirectory)..\Plugins\*.*"></File>
            </ItemGroup>
    
             <!--It will copy the plugins output files into the Plugins folder of the goal project-->
            <Copy SourceFiles="@(File)" DestinationFolder="$(ProjectDir)Plugins"></Copy>
    
        </Target>
    
    </Project>
    
  3. 将这些添加到 Plugins.csproj 文件:

    <ItemGroup>
            <None Include="bin\Debug\netstandard2.0\Plugins.dll" Pack="true" PackagePath="Plugins"></None>
    
            //add any output files from Plugins project which you want them to be packed 
    
            <None Include="build\Plugins.props" Pack="true" PackagePath="build"></None>
        </ItemGroup>
    
  4. 使用 Pack 按钮创建 nuget 包的新发行版本。

另外,当您安装这个新版本的nuget包时,请清理您的nuget缓存或删除C:\Users\xxx(current user)\.nuget\packages.

下的所有文件

安装完成后,请点击Build按钮,文件将在Plugins[=]下生成54=]文件夹。

还有.