分享方式:


變更組建輸出目錄

您可以根據組態 (針對偵錯及/或版本) 指定專案所產生的輸出位置。 使用預設設定時,輸出資料夾因專案類型和 SDK 而有所不同,有些專案使用特定平台或特定架構的子資料夾。

Visual Studio 提供屬性,可讓您藉由指定相對於專案資料夾的路徑,或檔案系統中任何位置的絕對路徑,將中繼和最終輸出置於自訂資料夾。 除了您在 Visual Studio 專案屬性中指定的設定之外,您也可以編輯專案檔,並使用 MSBuild 和 .NET SDK 的功能進一步自訂輸出,無論是針對個別專案,還是在許多專案的解決方案層級,皆完全控制專案輸出的所有層面。

變更組建輸出目錄

  1. 清除專案或解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。

  2. 若要開啟專案屬性頁面,請以滑鼠右鍵按一下 [方案總管] 中的專案節點,然後選取 [屬性]

  3. 根據您的專案類型,選取適當的索引標籤:

    • 若是 C#,請選取 [建置] 索引標籤。
    • 若是 Visual Basic,請選取 [編譯] 索引標籤。
    • 若是 C++ 或 JavaScript,請選取 [一般] 索引標籤。
  4. 在頂端的組態下拉式清單中,選擇您想要變更其輸出檔位置的組態 ([偵錯]、[發行] 或 [所有組態])。

  5. 在頁面中尋找輸出路徑項目,因您的專案類型而異:

    • 輸出路徑適用於 C++ 和 JavaScript 專案
    • 組建輸出路徑適用於 Visual Basic 專案
    • 輸出目錄適用於 Visual C++ 專案

    鍵入要產生輸出的目標路徑 (絕對或相對於根專案目錄),或選擇 [瀏覽] 以瀏覽至該資料夾。

    適用於 Visual Studio C# 專案的輸出路徑

    注意

    某些專案 (.NET 和 ASP.NET Core) 預設會在組建路徑包含架構版本或執行階段識別碼。 若要變更此設定,請在方案總管中以滑鼠右鍵按一專案節點,選取 [編輯專案檔],然後新增下列項目:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

提示

如果您指定的位置並未產生輸出,請確定您已正確選取 Visual Studio 的功能表列來建置對應組態 (例如 [偵錯] 或 [發行])。

Visual Studio 2019 中的組建組態選擇器。

建置通用輸出目錄

依預設,Visual Studio 會在方案內專屬資料夾的方案中建立每個專案。 您可以變更專案的建置輸出路徑,強制將所有輸出放在相同的資料夾中。

將所有方案輸出放在一個通用目錄中

  1. 清除解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。

  2. 按一下方案中的一個專案。

  3. 按一下 [專案] 功能表上的 [屬性]。

  4. 在每個專案中,根據其類型,選取 [編譯] 或 [組建],並將 [輸出路徑] 或 [基礎輸出路徑] 設定為要用於方案中所有專案的資料夾。

  5. 開啟專案的專案檔,並將下列屬性宣告加入至第一個屬性群組。

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    UseCommonOutputDirectory 設定為 true 會告知 Visual Studio 及其基礎建置引擎 (MSBuild),您要將多個專案輸出放在相同的資料夾中,因此 MSBuild 會省略專案相依於其他專案時通常發生的複製步驟。

  6. 針對解決方案中的所有專案,重複步驟 2-5。 如果您有一些不應該使用通用輸出目錄的特殊專案,則可以略過某些專案。

設定專案的中繼輸出目錄 (.NET 專案)

  1. 清除專案,移除任何現有的輸出檔案。

  2. 開啟專案檔案。

  3. 將下列屬性宣告新增至第一個屬性群組。

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    路徑會與專案檔相對,或者您可以使用絕對路徑。 如果您想要將專案名稱放在路徑中,您可以使用 MSBuild 屬性 $(MSBuildProjectName)$(MSBuildProjectDirectory) 來參考它。 如需您可以使用的更多屬性,請參閱 MSBuild 保留和已知屬性

  4. 建置時,Visual Studio 仍然會在專案資料夾底下建立 obj 資料夾,但它是空的。 您可以隨著建置程序的一部分將它刪除。 執行該動作的其中一個方法,是新增建置後事件以執行下列命令:

    rd "$(ProjectDir)obj" /s /q
    

    請參閱指定自訂建置事件

在 Visual Studio 2022 中,視您的專案類型而定,有不同的專案設計工具使用者介面。 C# .NET Framework 和所有 Visual Basic 專案都會使用舊版 .NET 專案設計工具,但 C# .NET Core (和 .NET 5 和更新版本) 專案會使用目前的 .NET 專案設計工具。 C++ 專案會使用自己的屬性頁使用者介面。 本節中的步驟取決於您所使用的專案設計工具。

變更組建輸出目錄

此程序適用於 Visual Studio 2022 中以 .NET Core 或 .NET 5 和更新版本為目標的 C# 專案。

  1. 清除專案或解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。

  2. 方案總管中以滑鼠右鍵按一下專案節點,並選取 [屬性]

  3. 展開建置區段,然後向下捲動至輸出子區段。

  4. 尋找 C# 的 [基礎輸出路徑],並鍵入要產生輸出的目標路徑 (絕對或相對於根專案目錄),或改為選擇 [瀏覽] 以瀏覽至該資料夾。 請注意,設定名稱會附加至基礎輸出路徑,以產生實際的輸出路徑。

    顯示 .NET Core C# 專案的「輸出」路徑屬性的螢幕擷取畫面。

    注意

    某些專案 (.NET 和 ASP.NET Core) 預設會在最終輸出路徑包含架構版本或執行階段識別碼。 若要變更此設定,請在方案總管中以滑鼠右鍵按一專案節點,選取 [編輯專案檔],然後新增下列項目:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

建置通用輸出目錄

依預設,Visual Studio 會在方案內專屬資料夾的方案中建立每個專案。 您可以變更專案的建置輸出路徑,強制將所有輸出放在相同的資料夾中。

  1. 清除解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。

  2. 按一下方案中的一個專案。

  3. 按一下 [專案] 功能表上的 [屬性]。

  4. 在每個專案中,根據其類型,選取 [編譯] 或 [組建],並將 [輸出路徑] 或 [基礎輸出路徑] 設定為要用於方案中所有專案的資料夾。

  5. 開啟專案的專案檔,並將下列屬性宣告加入至第一個屬性群組。

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    UseCommonOutputDirectory 設定為 true 會告知 Visual Studio 及其基礎建置引擎 (MSBuild),您要將多個專案輸出放在相同的資料夾中,因此 MSBuild 會省略專案相依於其他專案時通常發生的複製步驟。

  6. 針對解決方案中的所有專案,重複步驟 2-5。 如果您有一些不應該使用通用輸出目錄的特殊專案,則可以略過某些專案。

提示

如果您指定的位置並未產生輸出,請確定您已正確選取 Visual Studio 的功能表列來建置對應組態 (例如 [偵錯] 或 [發行])。

Visual Studio 2022 中組建組態選擇器的螢幕擷取畫面。

設定專案的中繼輸出目錄

此程序適用於 Visual Studio 2022 中以 .NET Core 或 .NET 5 和更新版本為目標的 C# 專案。

  1. 清除專案,移除任何現有的輸出檔案。

  2. 開啟專案檔案。

  3. 將下列屬性宣告新增至第一個屬性群組。

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    路徑會與專案檔相對,或者您可以使用絕對路徑。 如果您想要將專案名稱放在路徑中,您可以使用 MSBuild 屬性 $(MSBuildProjectName)$(MSBuildProjectDirectory) 來參考它。 如需您可以使用的更多屬性,請參閱 MSBuild 保留和已知屬性

  4. 建置時,Visual Studio 仍然會在專案資料夾底下建立 obj 資料夾,但它是空的。 您可以隨著建置程序的一部分將它刪除。 執行該動作的其中一個方法,是新增建置後事件以執行下列命令:

    rd "$(ProjectDir)obj" /s /q
    

    請參閱指定自訂建置事件

使用 Directory.Build.props 設定輸出目錄

如果您有大量專案,而且想要變更全部的輸出資料夾,則使用本文前述的方法逐一變更,可能繁瑣又容易出錯。 在這種情況,您可以在解決方案資料夾 Directory.Build.props 建立檔案,在一個地方設定適當的 MSBuild 屬性,套用至解決方案中的所有專案。 將具有此特定名稱的檔案放在您想要影響之所有專案的父資料夾,可以輕鬆地在單一位置維護自訂以及輕鬆變更數值。 請參閱依資料夾自訂組建

使用成品整理組建輸出

針對 .NET 8 專案,您可以使用成品功能,以高度自訂和彈性的方式安排輸出。 請參閱成品輸出配置