C# 發布專案時自動複製檔案到輸出資料夾

在發布專案時大部分的 cs 檔案都會被壓縮到一個 .dll 檔案中,在專案資料夾下沒有使用到的檔案並不會被打包發布。如果有些檔案想要在發布時一併被複製到發布的檔案可以怎麼做呢?

假設在專案資料夾中有個 Template 資料夾,裡面有幾個我們想要發布時一併複製的檔案,例如 txt, doc 之類的檔案,因為這些檔案不需要被編譯或是處理,一般發布是會忽略 Template 資料夾。

不過我們可以修改 .csproj 檔案,加入以下內容即可:
    
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <ItemGroup>
        <None Update="Template\*">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>
    
</Project>
    

這樣在發布時就會自動複製 Template 資料夾和裡面的所有檔案。

參考資料:
Microsoft.Learn - Common MSBuild project items

留言

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com