为了实现这一点,您应该创建一个<package_id>.props文件,该文件可以根据需要将这些文件复制到目标路径中。
1)在您的MyPlugin库项目中,您应该在Build<package_id>.props
文件夹下创建一个名为的文件。
然后在该新文件中添加这些内容:
<Project>
<Target Name="CopyToFolder" BeforeTargets="Build">
<ItemGroup>
<Files Include="$(MSBuildThisFileDirectory)..\File\*.*"></Files>
</ItemGroup>
<Copy SourceFiles="@(Files)" DestinationFolder="$(ProjectDir)bin\Plugin"></Copy>
</Target>
</Project>
2)MyPlugin.csproj
在您的文件中添加这些节点:
<ItemGroup>
<None Include="xxx\MyPlugin.dll(the path of MyPlugin.dll in your project)" Pack="true" PackagePath="File"></None>
<None Include="xxx\MyPlugin.config(the path of MyPlugin.dll in your project)" Pack="true" PackagePath="File"></None>
<None Include="Build\MyPlugin.props" Pack="true" PackagePath="build"></None>
</ItemGroup>
3)点击Pack菜单重新打包MyPlugin项目。在安装这个新版本的 nuget 包之前,你应该先清理 nuget 缓存或删除.C:\Users\xxx(current user)\.nuget\packages
此外,还有一个类似的线程您可以参考。
==================================================== =
更新 1
对于第 1 步的描述:
该.props
文件必须命名为 your package_id
,以便它可以在 nuget nupkg 文件上运行。请参阅我在上面提供的链接。
例如,如果你的 nuget 包被命名为MyPlugin.1.0.0.nupkg
,那么 props 文件应该被命名为MyPlugin.props
file. 目标的建议是将文件从 nupkg 的 File 文件夹复制到目标主项目的bin\Plugin
文件夹中。
对于第 2 步的描述:
这些步骤将您的MyPlugin项目文件的内容打包到 nupkg 中。
因此,如果您位于MyPluginMyPlugin.config
项目的 bin\Release 文件夹下,您应该使用:
<None Include="bin\Release\netstandard2.0\MyPlugin.config(the path of MyPlugin.dll in your project)" Pack="true" PackagePath="File"></None>
您应该确保这bin\Release\netstandard2.0\MyPlugin.config
是正确的,并且由于其相对路径(与 csproj 文件的路径比较),您可以找到该文件。
PackagePath="File"表示要将MyPlugin.config
文件打包到nupkg 的File 文件夹中。
<None Include="Build\MyPlugin.props" Pack="true" PackagePath="build"></None>
这一步是打包MyPlugin.props
到 nupkg 文件的 build 文件夹中。请看这个文件,
Build\MyPlugin.props
表示您的 MyPlugin 项目中的文件物理路径,MyPlugin.props
以便 nuget 找到该文件。
The build folder of nupkg (3.x+) MSBuild .targets and .props files Automatically inserted into the project.
所以它是nupkg的功能。
无论如何,这一步可以自己检查,请检查文件的路径是否正确,然后确保目标文件存在于nupkg的File文件夹中。
这是我的 nupkg 结构:
==================================================== ======================
此外,在安装这个新版本的 nuget 包之前,您应该先清理 nuget 缓存以删除旧缓存,以防您仍然安装旧缓存。
之后,首先构建您的主项目以执行目标,然后您将看到我在这里展示的效果。