让 NuGet 包输出一个文件
Have a NuGet package output a file
我有一个 Visual Studio 项目,我已经制作成 NuGet 包。该项目中有一个文件(名为 SwaggerIndex.html
)。我已经将该文件设置为将“复制到输出目录”属性 设置为“如果更新则复制”。 (我需要在构建时将此文件复制到构建文件夹。)
在那个解决方案中它工作得很好。 (我创建了另一个项目来测试它,当它引用我的具有 SwaggerIndex.html
的项目时,它会很好地将它输出到构建文件夹。)
但是,当我将其打包到一个 NuGet 并将其拉入另一个 solution/project 时,SwaggerIndex.html
文件不会在构建时输出。
我正在通过转到项目的“包”属性选项卡并选择“在构建时生成 NuGet 包”来制作我的 NuGet 包。所有涉及的项目都是运行.Net Core 3.1.
如何让我的 NuGet 包在构建时创建我的 SwaggerIndex.html
文件(就像它只是一个普通项目时一样)?
请试试这些:
我有两种解决方案供您解决问题。
解决方案 1
如果你只想在新的 sdk 项目(Net Core
和 Net Standard
项目)中安装这个 nuget 包,你可以使用这个
1) 在您的 xxx.csproj
文件中添加这些节点:
<ItemGroup>
<None Include="xxx\SwaggerIndex.html(the path of SwaggerIndex.html file in your project)" Pack="true" PackagePath="contentFiles\any\any">
<PackageCopyToOutput>true</PackageCopyToOutput>
</None>
</ItemGroup>
2)然后重新打包你的nuget项目,在你安装新版本之前,你应该先clean nuget caches first或者直接删除[=16=下的所有缓存文件]
解决方案 2
如果你想让这个 nuget 包在 Net Framework
和 Net Core
项目中复制 SwaggerIndex.html
文件,你应该使用这个:
1) 在你的 nuget 项目中添加一个名为 <package_id>.props
的文件。你应该注意,如果你的 nuget 包命名为 SwaggerIndex.1.0.0.nupkg
,你应该将文件命名为 SwaggerIndex.props
文件,这样它才能工作。
在我这边,我把它放到了一个叫build
.
的文件夹里
2)然后在SwaggerIndex.props
文件中添加这些内容,
<Project>
<Target Name="CopyToOutputFolder" BeforeTargets="Build">
<ItemGroup>
<File Include="$(MSBuildThisFileDirectory)..\File\*.*"></File>
</ItemGroup>
<Copy SourceFiles="@(File)" DestinationFolder="$(TargetDir)"></Copy>
</Target>
</Project>
3) 将这些添加到您的 nuget 项目的 xxx.csproj
文件中。
<ItemGroup>
<None Include="SwaggerIndex.html" Pack="true" PackagePath="File"></None>
<None Include="build\SwaggerIndex.props" Pack="true" PackagePath="build"></None>
</ItemGroup>
4) 然后重新打包你的 nuget 包,在安装这个新版本的 nuget 包之前,你应该 first clean all nuget caches first.
当你完成安装新版本的 nuget 包后,点击 Build 文件将被复制到主项目中。
除此之外,还有这个。
我有一个 Visual Studio 项目,我已经制作成 NuGet 包。该项目中有一个文件(名为 SwaggerIndex.html
)。我已经将该文件设置为将“复制到输出目录”属性 设置为“如果更新则复制”。 (我需要在构建时将此文件复制到构建文件夹。)
在那个解决方案中它工作得很好。 (我创建了另一个项目来测试它,当它引用我的具有 SwaggerIndex.html
的项目时,它会很好地将它输出到构建文件夹。)
但是,当我将其打包到一个 NuGet 并将其拉入另一个 solution/project 时,SwaggerIndex.html
文件不会在构建时输出。
我正在通过转到项目的“包”属性选项卡并选择“在构建时生成 NuGet 包”来制作我的 NuGet 包。所有涉及的项目都是运行.Net Core 3.1.
如何让我的 NuGet 包在构建时创建我的 SwaggerIndex.html
文件(就像它只是一个普通项目时一样)?
请试试这些:
我有两种解决方案供您解决问题。
解决方案 1
如果你只想在新的 sdk 项目(Net Core
和 Net Standard
项目)中安装这个 nuget 包,你可以使用这个
1) 在您的 xxx.csproj
文件中添加这些节点:
<ItemGroup>
<None Include="xxx\SwaggerIndex.html(the path of SwaggerIndex.html file in your project)" Pack="true" PackagePath="contentFiles\any\any">
<PackageCopyToOutput>true</PackageCopyToOutput>
</None>
</ItemGroup>
2)然后重新打包你的nuget项目,在你安装新版本之前,你应该先clean nuget caches first或者直接删除[=16=下的所有缓存文件]
解决方案 2
如果你想让这个 nuget 包在 Net Framework
和 Net Core
项目中复制 SwaggerIndex.html
文件,你应该使用这个:
1) 在你的 nuget 项目中添加一个名为 <package_id>.props
的文件。你应该注意,如果你的 nuget 包命名为 SwaggerIndex.1.0.0.nupkg
,你应该将文件命名为 SwaggerIndex.props
文件,这样它才能工作。
在我这边,我把它放到了一个叫build
.
2)然后在SwaggerIndex.props
文件中添加这些内容,
<Project>
<Target Name="CopyToOutputFolder" BeforeTargets="Build">
<ItemGroup>
<File Include="$(MSBuildThisFileDirectory)..\File\*.*"></File>
</ItemGroup>
<Copy SourceFiles="@(File)" DestinationFolder="$(TargetDir)"></Copy>
</Target>
</Project>
3) 将这些添加到您的 nuget 项目的 xxx.csproj
文件中。
<ItemGroup>
<None Include="SwaggerIndex.html" Pack="true" PackagePath="File"></None>
<None Include="build\SwaggerIndex.props" Pack="true" PackagePath="build"></None>
</ItemGroup>
4) 然后重新打包你的 nuget 包,在安装这个新版本的 nuget 包之前,你应该 first clean all nuget caches first.
当你完成安装新版本的 nuget 包后,点击 Build 文件将被复制到主项目中。
除此之外,还有