在 .NET 10(或任何現代 .NET 版本)專案建置後,bin\Debug\netX.X\ 資料夾中出現一堆語系資料夾(例如 zh-Hant、ja、fr 等),通常是因為你引用的 NuGet 套件(如 Microsoft.Extensions.、System. 或其他第三方套件)包含了多國語言的衛星組件(satellite assemblies),用於本地化(localization)支援。
如果你完全不需要多語系支援,可以透過以下方式禁止這些語系資料夾被複製到輸出目錄:
在 專案.csproj 中設定 <SatelliteResourceLanguages>
在你的 .csproj 檔案中加入以下屬性(通常放在 <PropertyGroup> 區塊內):
<PropertyGroup>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
這會告訴 MSBuild 只保留 en(英文)的資源,其他語系的衛星組件將不會被複製到輸出目錄。
正確做法:不要留空,而是明確指定只保留 en
雖然直覺上「留空」代表「不要任何語系」,但 MSBuild 的行為是:如果 <SatelliteResourceLanguages> 為空或未設定,會預設包含所有可用語系。
因此,請務必設定為 en(即使你不使用英文資源,這只是讓系統「只保留中性語言 + 英文衛星組件」,而多數套件根本沒有 en 衛星檔,所以實際上會完全不產生語系資料夾)
--------------------------------------------------------------------------------------------------
若是 我的方案 有 5 個專案,不想 5個專案 .csproj 都去修改
可以用 全域 MSBuild 設定,不用逐個修改專案的 .csproj。是透過 Directory.Build.props 或 Directory.Build.targets,這是 MSBuild 提供的「全域專案層級設定檔」。
使用 Directory.Build.props
在你的解決方案根目錄(.sln 同層)建立一個檔案:
Directory.Build.props
-
加入以下內容:
-
這個設定會自動套用到同目錄下所有專案(.csproj)
-
所有 Build 都只會保留
en資料夾,其他語系 DLL 不會出現
沒有留言:
張貼留言