在不同的文件夹中恢复 nuget 包
Restore nuget package in different folder
我们有一些项目(插件)在多个项目中使用,这些项目的输出将复制到目标项目中的特定文件夹(插件文件夹)。
我们使用 Visual studio 2019 Pack 选项打包项目,然后将 npkg 文件推送到本地 NuGet 服务器以供进一步使用。
问题是当我们想要获取这些包时,包管理器应该将 lib 文件放在 Plugins 文件夹中,但不幸的是,包管理器将它们提取到根文件夹 (bin) 中。
我的问题是:如何配置 nuspec 文件以强制包管理器提取到正确的文件夹,我可以使用 visual studio 来完成还是必须手动创建 nuspec 文件。
你应该使用<packages_id>.props文件来实现它。
在您的 lib 项目的构建文件夹下创建一个名为 <packages_id>.props
的文件。
您应该注意,如果您的 nupkg 文件名为 Plugins.1.0.0.nupkg
,您应该将此文件命名为 Plugins.props
,这样它才能正常工作。
将这些添加到 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>
将这些添加到 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>
使用 Pack 按钮创建 nuget 包的新发行版本。
另外,当您安装这个新版本的nuget包时,请清理您的nuget缓存或删除C:\Users\xxx(current user)\.nuget\packages
.
下的所有文件
当安装完成后,请点击Build按钮,文件将在Plugins[=]下生成54=]文件夹。
还有.
我们有一些项目(插件)在多个项目中使用,这些项目的输出将复制到目标项目中的特定文件夹(插件文件夹)。 我们使用 Visual studio 2019 Pack 选项打包项目,然后将 npkg 文件推送到本地 NuGet 服务器以供进一步使用。
问题是当我们想要获取这些包时,包管理器应该将 lib 文件放在 Plugins 文件夹中,但不幸的是,包管理器将它们提取到根文件夹 (bin) 中。
我的问题是:如何配置 nuspec 文件以强制包管理器提取到正确的文件夹,我可以使用 visual studio 来完成还是必须手动创建 nuspec 文件。
你应该使用<packages_id>.props文件来实现它。
在您的 lib 项目的构建文件夹下创建一个名为
<packages_id>.props
的文件。您应该注意,如果您的 nupkg 文件名为
Plugins.1.0.0.nupkg
,您应该将此文件命名为Plugins.props
,这样它才能正常工作。将这些添加到
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>
将这些添加到
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>
使用 Pack 按钮创建 nuget 包的新发行版本。
另外,当您安装这个新版本的nuget包时,请清理您的nuget缓存或删除C:\Users\xxx(current user)\.nuget\packages
.
当安装完成后,请点击Build按钮,文件将在Plugins[=]下生成54=]文件夹。
还有