Możesz określić lokalizację danych wyjściowych wygenerowanych przez projekt dla poszczególnych konfiguracji (dla debugowania, wydania lub obu tych elementów). W przypadku ustawień domyślnych foldery wyjściowe różnią się w zależności od typu projektu i zestawu SDK, a niektóre projekty korzystają z podfolderów specyficznych dla platformy lub frameworku.
Program Visual Studio udostępnia właściwości, które umożliwiają umieszczenie pośrednich i końcowych danych wyjściowych w folderach niestandardowych przez określenie ścieżek względem folderu projektu lub ścieżki bezwzględnej w dowolnym miejscu w systemie plików. Oprócz ustawień, które można określić we właściwościach projektu programu Visual Studio, można również dodatkowo dostosować dane wyjściowe, edytując plik projektu i korzystając z możliwości programu MSBuild i zestawu .NET SDK w celu pełnej kontroli nad wszystkimi aspektami danych wyjściowych projektu, zarówno dla poszczególnych projektów, jak i na poziomie rozwiązania dla wielu projektów.
W programie Visual Studio 2022 istnieją różne interfejsy użytkownika programu Project Designer, w zależności od typu projektu. Projekty .NET Framework korzystają ze starszej wersji programu .NET Project Designer, ale projekty .NET Core (i .NET 5 i nowsze) używają bieżącego projektanta projektów .NET. Projekty języka C++ używają własnego interfejsu użytkownika stron właściwości. Kroki opisane w tej sekcji zależą od używanego projektanta projektu.
Zmienianie katalogu wyjściowego kompilacji
Ta procedura dotyczy projektów w programie Visual Studio 2022 przeznaczonym dla platformy .NET Core lub .NET 5 i nowszych.
Wyczyść projekt lub rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Build>Clean solution).
Kliknij prawym przyciskiem myszy węzeł projektu w eksploratorze rozwiązań i wybierz pozycję właściwości .
W przypadku projektów języka C# rozwiń sekcję Build i przewiń w dół do podsekcji Output. W przypadku języka Visual Basic rozwiń sekcję kompilowania i zapoznaj się z sekcją Ogólne.
Znajdź podstawową ścieżkę wyjściowąi wpisz ścieżkę do wygenerowania wyjścia (bezwzględną lub względną względem katalogu głównego projektu) lub wybierz Przeglądaj, aby przejrzeć do tego folderu. Pamiętaj, że nazwa konfiguracji jest dołączana do podstawowej ścieżki wyjściowej w celu wygenerowania rzeczywistej ścieżki wyjściowej.
C#:
Visual Basic:
Notatka
Niektóre projekty (.NET i ASP.NET Core) domyślnie zawierają wersję platformy lub identyfikator środowiska uruchomieniowego w końcowej ścieżce wyjściowej. Aby to zmienić, kliknij prawym przyciskiem myszy węzeł projektu w eksploratorze rozwiązań , wybierz pozycję Edytuj plik projektui dodaj następujące elementy:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
Kompilowanie do wspólnego katalogu wyjściowego
Domyślnie program Visual Studio kompiluje każdy projekt w rozwiązaniu we własnym folderze wewnątrz rozwiązania. Możesz zmienić ścieżki wyjściowe kompilacji projektów, aby wymusić umieszczenie wszystkich danych wyjściowych w tym samym folderze.
Wyczyść rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Build>Clean solution).
Kliknij jeden projekt w rozwiązaniu.
W menu Project kliknij pozycję Właściwości.
W każdym projekcie, w zależności od jego typu, wybierz Compile lub Build, a następnie ustaw ścieżkę danych wyjściowych lub ścieżkę danych wyjściowych Base do folderu, który ma być używany dla wszystkich projektów w rozwiązaniu.
Otwórz plik projektu dla projektu i dodaj następującą deklarację właściwości do pierwszej grupy właściwości.
<PropertyGroup>
<!-- existing property declarations are here -->
<UseCommonOutputDirectory>true</UseCommonOutputDirectory>
</PropertyGroup>
Ustawienie UseCommonOutputDirectory na true informuje program Visual Studio i jego podstawowy aparat kompilacji (MSBuild), że umieszczasz wiele danych wyjściowych projektu w tym samym folderze, dlatego program MSBuild pomija krok kopiowania, który zwykle występuje, gdy projekty zależą od innych projektów.
Powtórz kroki 2–5 dla wszystkich projektów w rozwiązaniu. Niektóre projekty można pominąć, jeśli masz kilka wyjątkowych projektów, które nie powinny używać wspólnego katalogu wyjściowego.
Napiwek
Jeśli wyjście nie jest generowane w określonej lokalizacji, upewnij się, że tworzysz odpowiednią konfigurację (na przykład Debug lub Release) poprzez wybranie jej na pasku menu programu Visual Studio.
Ta procedura dotyczy projektów .NET Framework.
Wyczyść projekt lub rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Build>Clean solution).
Kliknij prawym przyciskiem myszy węzeł projektu w eksploratorze rozwiązań i wybierz pozycję właściwości .
Wybierz odpowiednią kartę na podstawie typu projektu:
- Dla C# wybierz kartę Kompilacja.
- Dla Visual Basic wybierz kartę kompilowanie.
Z listy rozwijanej konfiguracji na górze wybierz konfigurację, której lokalizację pliku wyjściowego chcesz zmienić (Debug, Releaselub Wszystkie konfiguracje).
Znajdź pozycję ścieżki wyjściowej na stronie — różni się ona w zależności od typu projektu.
-
ścieżka wyjściowa dla projektów C# i JavaScript
-
Ścieżka wyjściowa kompilacji dla projektów Visual Basic
Wpisz ścieżkę do wygenerowania danych wyjściowych (bezwzględnych lub względnych względem katalogu głównego projektu) lub wybierz Przeglądaj, aby przejść do tego folderu.
Kompilowanie do wspólnego katalogu wyjściowego
Domyślnie program Visual Studio kompiluje każdy projekt w rozwiązaniu we własnym folderze wewnątrz rozwiązania. Możesz zmienić ścieżki wyjściowe kompilacji projektów, aby wymusić umieszczenie wszystkich danych wyjściowych w tym samym folderze.
Wyczyść rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Build>Clean solution).
Kliknij jeden projekt w rozwiązaniu.
W menu Project kliknij pozycję Właściwości.
W każdym projekcie, w zależności od jego typu, wybierz Compile lub Build, a następnie ustaw ścieżkę danych wyjściowych lub ścieżkę danych wyjściowych Base do folderu, który ma być używany dla wszystkich projektów w rozwiązaniu.
Otwórz plik projektu dla projektu i dodaj następującą deklarację właściwości do pierwszej grupy właściwości.
<PropertyGroup>
<!-- existing property declarations are here -->
<UseCommonOutputDirectory>true</UseCommonOutputDirectory>
</PropertyGroup>
Ustawienie UseCommonOutputDirectory na true informuje program Visual Studio i jego podstawowy aparat kompilacji (MSBuild), że umieszczasz wiele danych wyjściowych projektu w tym samym folderze, dlatego program MSBuild pomija krok kopiowania, który zwykle występuje, gdy projekty zależą od innych projektów.
Powtórz kroki 2–5 dla wszystkich projektów w rozwiązaniu. Niektóre projekty można pominąć, jeśli masz kilka wyjątkowych projektów, które nie powinny używać wspólnego katalogu wyjściowego.
Napiwek
Jeśli wyjście nie jest generowane w określonej lokalizacji, upewnij się, że tworzysz odpowiednią konfigurację (na przykład Debug lub Release) poprzez wybranie jej na pasku menu programu Visual Studio.
Aby zmienić katalog wyjściowy kompilacji dla pojedynczego projektu C++:
Wyczyść projekt, aby usunąć wszystkie istniejące pliki wyjściowe (Build>Clean solution).
Kliknij prawym przyciskiem myszy węzeł projektu w eksploratorze rozwiązań i wybierz pozycję właściwości .
Wybierz kartę Ogólne.
Z listy rozwijanej konfiguracji na górze wybierz konfigurację, której lokalizację pliku wyjściowego chcesz zmienić (Debug, Releaselub Wszystkie konfiguracje).
Jeśli wyświetlasz wszystkie konfiguracje lub wszystkie platformy, możesz zauważyć <different options> dla niektórych właściwości. Wartości właściwości mogą być różne dla każdej kombinacji konfiguracji i platformy. Można je ustawić indywidualnie, ale ustawienia domyślne używają tego samego wyrażenia dla wszystkich kombinacji, ale używają makr $(Configuration) i $(Platform), aby utworzyć unikatową ścieżkę wyjściową dla każdej kombinacji.
Znajdź ścieżkę wyjściową w katalogu wyjściowym . Lista rozwijana udostępnia opcje edytowania wyrażenia, lub przeszukiwania ścieżki, albo (jeśli jest to istotne) dziedziczenia z domyślnego elementu nadrzędnego <lub projektu>.
Wpisz ścieżkę do wygenerowania danych wyjściowych (bezwzględnych lub względnych względem katalogu głównego projektu) lub wybierz Przeglądaj, aby przejść do tego folderu.
W przypadku wyrażeń, które zależą od wartości makr, kliknij Makra >>, aby wyświetlić dostępne makra i ich wartości. W oknie dialogowym zostanie również wyświetlona ostateczna rozszerzona wartość właściwości z bieżącymi wartościami makr.
Wszystkie zmienne środowiskowe są uwidocznione w programie MSBuild jako właściwości, więc jeśli chcesz odwołać się do zmiennej środowiskowej, możesz odwołać się do niej przy użyciu składni $(VAR) dla zmiennej środowiskowej VAR. Podczas tworzenia ścieżki przy użyciu makr i zmiennych środowiskowych należy uważać, czy jest wymagany ukośnik odwrotny.
Ta procedura ustawia właściwość OutDir w pliku projektu (.vcxproj). Jeśli plik projektu zostanie wyświetlony po ustawieniu tej właściwości, zobaczysz, że kod podobny do następującego został dodany:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>C:\MyOutputFolder</OutDir>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz stronę właściwości ogólnej i aby upewnić się, że znasz pracę ze stronami właściwości C++, aby zrozumieć zależność wartości właściwości od konfiguracji i platform, zobacz Praca z właściwościami projektu .
Ta procedura dotyczy projektów w programie Visual Studio 2022 przeznaczonym dla platformy .NET Core lub .NET 5 i nowszych.
Wyczyść projekt, aby usunąć wszystkie istniejące pliki wyjściowe.
Otwórz plik projektu.
Dodaj następującą deklarację właściwości do pierwszej grupy właściwości.
<PropertyGroup>
<!-- existing property declarations are here -->
<IntermediateOutputPath>path</IntermediateOutputPath>
</PropertyGroup>
Ścieżka jest względna względem pliku projektu lub można użyć ścieżki bezwzględnej. Jeśli chcesz umieścić nazwę projektu w ścieżce, możesz odwołać się do niego przy użyciu właściwości MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Aby uzyskać więcej informacji o właściwościach, których można użyć, zobacz zarezerwowane i dobrze znane właściwości.
Program Visual Studio nadal tworzy folder obj w folderze projektu podczas kompilacji, ale jest pusty. Można go usunąć w ramach procesu kompilacji. Jednym ze sposobów, aby to zrobić, jest dodanie zdarzenia po kompilacji w celu uruchomienia następującego polecenia:
rd "$(ProjectDir)obj" /s /q
Zobacz Określanie niestandardowych zdarzeń kompilacji.
Ta procedura dotyczy projektów .NET Framework.
Wyczyść projekt, aby usunąć wszystkie istniejące pliki wyjściowe.
Otwórz plik projektu.
Dodaj następującą deklarację właściwości do pierwszej grupy właściwości.
<PropertyGroup>
<!-- existing property declarations are here -->
<IntermediateOutputPath>path</IntermediateOutputPath>
</PropertyGroup>
Ścieżka jest względna względem pliku projektu lub można użyć ścieżki bezwzględnej. Jeśli chcesz umieścić nazwę projektu w ścieżce, możesz odwołać się do niego przy użyciu właściwości MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Aby uzyskać więcej informacji o właściwościach, których można użyć, zobacz zarezerwowane i dobrze znane właściwości.
Program Visual Studio nadal tworzy folder obj w folderze projektu podczas kompilacji, ale jest pusty. Można go usunąć w ramach procesu kompilacji. Jednym ze sposobów, aby to zrobić, jest dodanie zdarzenia po kompilacji w celu uruchomienia następującego polecenia:
rd "$(ProjectDir)obj" /s /q
Zobacz Określanie niestandardowych zdarzeń kompilacji.
Użyj właściwości Intermediate Directory, aby ustawić katalog dla danych wyjściowych pośrednich, takich jak pliki .obj.
Właściwość w pliku projektu to IntDir. Aby ustawić ścieżki dla danych wyjściowych pośrednich i końcowych w pliku projektu, dodaj grupę właściwości podobną do następującej:
<PropertyGroup>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)int\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
Użyj pliku Directory.Build.props, aby ustawić katalog wyjściowy
Jeśli masz dużą liczbę projektów i chcesz zmienić folder wyjściowy dla nich wszystkich, będzie to żmudne i podatne na błędy zmiany każdego z nich przy użyciu metod opisanych wcześniej w tym artykule. W takich przypadkach można utworzyć plik w folderze rozwiązania, Directory.Build.props, aby ustawić odpowiednie właściwości programu MSBuild w jednym miejscu, aby zastosować je do wszystkich projektów w rozwiązaniu. Umieszczając plik o tej konkretnej nazwie w folderze nadrzędnym wszystkich projektów, których dotyczy problem, można łatwo zachować dostosowania w jednym miejscu i ułatwić zmianę wartości. Zobacz Dostosowywanie kompilacji według folderu.
Jeśli masz dużą liczbę projektów i chcesz zmienić folder wyjściowy dla nich wszystkich, będzie to żmudne i podatne na błędy zmiany każdego z nich przy użyciu metod opisanych wcześniej w tym artykule. W takich przypadkach można utworzyć plik w folderze rozwiązania, Directory.Build.props, aby ustawić odpowiednie właściwości programu MSBuild w jednym miejscu, aby zastosować je do wszystkich projektów w rozwiązaniu. Umieszczając plik o tej konkretnej nazwie w folderze nadrzędnym wszystkich projektów, których dotyczy problem, można łatwo zachować dostosowania w jednym miejscu i ułatwić zmianę wartości. Zobacz Dostosowywanie kompilacji według folderu.
Jeśli masz dużą liczbę projektów i chcesz zmienić folder wyjściowy dla nich wszystkich, będzie to żmudne i podatne na błędy zmiany każdego z nich przy użyciu metod opisanych wcześniej w tym artykule. W takich przypadkach można utworzyć plik w folderze rozwiązania, Directory.Build.props, aby ustawić odpowiednie właściwości programu MSBuild w jednym miejscu, aby zastosować je do wszystkich projektów w rozwiązaniu. Umieszczając plik o tej konkretnej nazwie w folderze nadrzędnym wszystkich projektów, których dotyczy problem, można łatwo zachować dostosowania w jednym miejscu i ułatwić zmianę wartości. Zobacz Dostosowywanie kompilacji C++.
Aby ustawić zarówno pośrednie, jak i końcowe ścieżki wyjściowe w Directory.build.props, najlepiej użyć $(MSBuildThisFileDirectory) zamiast $(SolutionDir) do obsługi kompilacji projektu wiersza polecenia, gdzie nie zdefiniowano $(SolutionDir). Poniższy kod konfiguruje obie metody w sposób, który działa zarówno dla budowania w Visual Studio, jak i kompilacji projektów z poziomu wiersza poleceń.
<Project>
<PropertyGroup>
<SolutionDir Condition="'$(SolutionDir)' == ''">$(MSBuildThisFileDirectory)</SolutionDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)int\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
</Project>
Organizowanie danych wyjściowych kompilacji przy użyciu artefaktów
W przypadku projektów platformy .NET 8 można użyć funkcji artefaktów do rozmieszczania danych wyjściowych w sposób wysoce dostosowywalny i elastyczny. Zobacz układ wyjściowy Artifacts.
Powiązana zawartość