【问题标题】:Restore nuget package in different folder在不同的文件夹中恢复 nuget 包
【发布时间】:2021-03-24 21:53:54
【问题描述】:

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

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

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

【问题讨论】:

  • 您的 nuget 项目是针对 net framework 还是 net core?

标签: visual-studio nuget visual-studio-2019 nuget-spec


【解决方案1】:

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

  1. 在您的 lib 项目的 build 文件夹下创建一个名为 &lt;packages_id&gt;.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文件夹下生成。

还有a similar issue about this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2015-04-26
    • 2019-09-26
    相关资源
    最近更新 更多