變更組建輸出目錄
您可以根據組態 (針對偵錯及/或版本) 指定專案所產生的輸出位置。 使用預設設定時,輸出資料夾因專案類型和 SDK 而有所不同,有些專案使用特定平台或特定架構的子資料夾。
Visual Studio 提供屬性,可讓您藉由指定相對於專案資料夾的路徑,或檔案系統中任何位置的絕對路徑,將中繼和最終輸出置於自訂資料夾。 除了您在 Visual Studio 專案屬性中指定的設定之外,您也可以編輯專案檔,並使用 MSBuild 和 .NET SDK 的功能進一步自訂輸出,無論是針對個別專案,還是在許多專案的解決方案層級,皆完全控制專案輸出的所有層面。
變更組建輸出目錄
清除專案或解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。
若要開啟專案屬性頁面,請以滑鼠右鍵按一下 [方案總管] 中的專案節點,然後選取 [屬性]。
根據您的專案類型,選取適當的索引標籤:
- 若是 C#,請選取 [建置] 索引標籤。
- 若是 Visual Basic,請選取 [編譯] 索引標籤。
- 若是 C++ 或 JavaScript,請選取 [一般] 索引標籤。
在頂端的組態下拉式清單中,選擇您想要變更其輸出檔位置的組態 ([偵錯]、[發行] 或 [所有組態])。
在頁面中尋找輸出路徑項目,因您的專案類型而異:
- 輸出路徑適用於 C++ 和 JavaScript 專案
- 組建輸出路徑適用於 Visual Basic 專案
- 輸出目錄適用於 Visual C++ 專案
鍵入要產生輸出的目標路徑 (絕對或相對於根專案目錄),或選擇 [瀏覽] 以瀏覽至該資料夾。
注意
某些專案 (.NET 和 ASP.NET Core) 預設會在組建路徑包含架構版本或執行階段識別碼。 若要變更此設定,請在方案總管中以滑鼠右鍵按一專案節點,選取 [編輯專案檔],然後新增下列項目:
<PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup>
提示
如果您指定的位置並未產生輸出,請確定您已正確選取 Visual Studio 的功能表列來建置對應組態 (例如 [偵錯] 或 [發行])。
建置通用輸出目錄
依預設,Visual Studio 會在方案內專屬資料夾的方案中建立每個專案。 您可以變更專案的建置輸出路徑,強制將所有輸出放在相同的資料夾中。
將所有方案輸出放在一個通用目錄中
清除解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。
按一下方案中的一個專案。
按一下 [專案] 功能表上的 [屬性]。
在每個專案中,根據其類型,選取 [編譯] 或 [組建],並將 [輸出路徑] 或 [基礎輸出路徑] 設定為要用於方案中所有專案的資料夾。
開啟專案的專案檔,並將下列屬性宣告加入至第一個屬性群組。
<PropertyGroup> <!-- existing property declarations are here --> <UseCommonOutputDirectory>true</UseCommonOutputDirectory> </PropertyGroup>
將
UseCommonOutputDirectory
設定為true
會告知 Visual Studio 及其基礎建置引擎 (MSBuild),您要將多個專案輸出放在相同的資料夾中,因此 MSBuild 會省略專案相依於其他專案時通常發生的複製步驟。針對解決方案中的所有專案,重複步驟 2-5。 如果您有一些不應該使用通用輸出目錄的特殊專案,則可以略過某些專案。
設定專案的中繼輸出目錄 (.NET 專案)
清除專案,移除任何現有的輸出檔案。
開啟專案檔案。
將下列屬性宣告新增至第一個屬性群組。
<PropertyGroup> <!-- existing property declarations are here --> <IntermediateOutputPath>path</IntermediateOutputPath> </PropertyGroup>
路徑會與專案檔相對,或者您可以使用絕對路徑。 如果您想要將專案名稱放在路徑中,您可以使用 MSBuild 屬性
$(MSBuildProjectName)
、$(MSBuildProjectDirectory)
來參考它。 如需您可以使用的更多屬性,請參閱 MSBuild 保留和已知屬性。建置時,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# 專案。
清除專案或解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。
在方案總管中以滑鼠右鍵按一下專案節點,並選取 [屬性]。
展開建置區段,然後向下捲動至輸出子區段。
尋找 C# 的 [基礎輸出路徑],並鍵入要產生輸出的目標路徑 (絕對或相對於根專案目錄),或改為選擇 [瀏覽] 以瀏覽至該資料夾。 請注意,設定名稱會附加至基礎輸出路徑,以產生實際的輸出路徑。
注意
某些專案 (.NET 和 ASP.NET Core) 預設會在最終輸出路徑包含架構版本或執行階段識別碼。 若要變更此設定,請在方案總管中以滑鼠右鍵按一專案節點,選取 [編輯專案檔],然後新增下列項目:
<PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup>
建置通用輸出目錄
依預設,Visual Studio 會在方案內專屬資料夾的方案中建立每個專案。 您可以變更專案的建置輸出路徑,強制將所有輸出放在相同的資料夾中。
清除解決方案,移除任何現有的輸出檔案 (組建>清除解決方案)。
按一下方案中的一個專案。
按一下 [專案] 功能表上的 [屬性]。
在每個專案中,根據其類型,選取 [編譯] 或 [組建],並將 [輸出路徑] 或 [基礎輸出路徑] 設定為要用於方案中所有專案的資料夾。
開啟專案的專案檔,並將下列屬性宣告加入至第一個屬性群組。
<PropertyGroup> <!-- existing property declarations are here --> <UseCommonOutputDirectory>true</UseCommonOutputDirectory> </PropertyGroup>
將
UseCommonOutputDirectory
設定為true
會告知 Visual Studio 及其基礎建置引擎 (MSBuild),您要將多個專案輸出放在相同的資料夾中,因此 MSBuild 會省略專案相依於其他專案時通常發生的複製步驟。針對解決方案中的所有專案,重複步驟 2-5。 如果您有一些不應該使用通用輸出目錄的特殊專案,則可以略過某些專案。
提示
如果您指定的位置並未產生輸出,請確定您已正確選取 Visual Studio 的功能表列來建置對應組態 (例如 [偵錯] 或 [發行])。
設定專案的中繼輸出目錄
此程序適用於 Visual Studio 2022 中以 .NET Core 或 .NET 5 和更新版本為目標的 C# 專案。
清除專案,移除任何現有的輸出檔案。
開啟專案檔案。
將下列屬性宣告新增至第一個屬性群組。
<PropertyGroup> <!-- existing property declarations are here --> <IntermediateOutputPath>path</IntermediateOutputPath> </PropertyGroup>
路徑會與專案檔相對,或者您可以使用絕對路徑。 如果您想要將專案名稱放在路徑中,您可以使用 MSBuild 屬性
$(MSBuildProjectName)
、$(MSBuildProjectDirectory)
來參考它。 如需您可以使用的更多屬性,請參閱 MSBuild 保留和已知屬性。建置時,Visual Studio 仍然會在專案資料夾底下建立 obj 資料夾,但它是空的。 您可以隨著建置程序的一部分將它刪除。 執行該動作的其中一個方法,是新增建置後事件以執行下列命令:
rd "$(ProjectDir)obj" /s /q
請參閱指定自訂建置事件。
使用 Directory.Build.props 設定輸出目錄
如果您有大量專案,而且想要變更全部的輸出資料夾,則使用本文前述的方法逐一變更,可能繁瑣又容易出錯。 在這種情況,您可以在解決方案資料夾 Directory.Build.props 建立檔案,在一個地方設定適當的 MSBuild 屬性,套用至解決方案中的所有專案。 將具有此特定名稱的檔案放在您想要影響之所有專案的父資料夾,可以輕鬆地在單一位置維護自訂以及輕鬆變更數值。 請參閱依資料夾自訂組建。
使用成品整理組建輸出
針對 .NET 8 專案,您可以使用成品功能,以高度自訂和彈性的方式安排輸出。 請參閱成品輸出配置。