[英]Copy nuget package content file (of type .exe) to output directory of project using that nuget package
[英]Have a NuGet package output a file
我有一個已制作成 NuGet 包的 Visual Studio 項目。 該項目中有一個文件(稱為SwaggerIndex.html
)。 我已將該文件設置為將“復制到輸出目錄”屬性設置為“如果更新則復制”。 (我需要將此文件復制到構建時的構建文件夾。)
在該解決方案中,它工作得很好。 (我創建了另一個項目來測試它,當它引用我的具有SwaggerIndex.html
項目時,它將它輸出到構建文件夾就好了。)
但是,當我將其打包到 NuGet 並將其拉入另一個解決方案/項目時, 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項目,在安裝新版本之前,你應該先清理nuget緩存或者刪除C:\\Users\\xxx(current user)\\.nuget\\packages
下的所有緩存文件
解決方案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包之前,你應該先清理所有的nuget緩存。
當您完成安裝新版本的 nuget 包后,單擊Build ,該文件將被復制到主項目中。
此外,還有一個類似的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.