簡體   English   中英

有一個 NuGet 包輸出一個文件

[英]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 CoreNet 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 FrameworkNet 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM