Zmiana katalogu wyjściowego kompilacji

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 specyficznych dla platformy.

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.

Zmiana katalogu wyjściowego kompilacji

  1. Wyczyść projekt lub rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Kompiluj>czyste rozwiązanie).

  2. Aby otworzyć strony właściwości projektu, kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierz polecenie Właściwości.

  3. Wybierz odpowiednią kartę na podstawie typu projektu:

    • W polu C#wybierz kartę Kompilacja.
    • W przypadku języka Visual Basic wybierz kartę Kompiluj.
    • W przypadku języka C++ lub JavaScript wybierz kartę Ogólne .
  4. Z listy rozwijanej konfiguracji w górnej części wybierz konfigurację, której lokalizacja pliku wyjściowego ma zostać zmieniona (Debuguj, Zwolnij lub Wszystkie konfiguracje).

  5. Znajdź wpis ścieżki wyjściowej na stronie — różni się on w zależności od typu projektu:

    • Ścieżka wyjściowa dla projektów C# i JavaScript
    • Ścieżka danych wyjściowych kompilacji dla projektów Visual Basic
    • Katalog wyjściowy dla projektów Visual C++

    Wpisz ścieżkę, aby wygenerować dane wyjściowe (bezwzględne lub względne względem głównego katalogu projektu) lub wybierz pozycję Przeglądaj , aby przejść do tego folderu.

    Właściwość ścieżki wyjściowej dla projektu visual Studio C#

    Uwaga

    Niektóre projekty (.NET i ASP.NET Core) domyślnie zawierają wersję platformy lub identyfikator środowiska uruchomieniowego w ścieżce kompilacji. Aby to zmienić, kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań, wybierz polecenie Edytuj plik projektu i dodaj następujące elementy:

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

Napiwek

Jeśli dane wyjściowe nie są generowane w określonej lokalizacji, upewnij się, że tworzysz odpowiednią konfigurację (na przykład Debuguj lub Zwolnij), wybierając ją na pasku menu programu Visual Studio.

Selektor konfiguracji kompilacji w programie Visual Studio 2019.

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.

Aby umieścić wszystkie dane wyjściowe rozwiązania w wspólnym katalogu

  1. Wyczyść rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Kompiluj>czyste rozwiązanie).

  2. Kliknij jeden projekt w rozwiązaniu.

  3. W menu Project (Projekt) kliknij pozycję Properties (Właściwości).

  4. W każdym projekcie w zależności od typu wybierz pozycję Kompiluj lub Skompiluj, a następnie ustaw ścieżkę wyjściową lub ścieżkę wyjściową podstawową do folderu, który ma być używany dla wszystkich projektów w rozwiązaniu.

  5. 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 polecenia 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.

  6. 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.

Aby ustawić pośredni katalog wyjściowy dla projektu (projekty.NET)

  1. Wyczyść projekt, aby usunąć wszystkie istniejące pliki wyjściowe.

  2. Otwórz plik projektu.

  3. 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 $(MSBuildProjectName)MSBuild , $(MSBuildProjectDirectory). Aby uzyskać więcej właściwości, których można użyć, zobacz MsBuild reserved i dobrze znane właściwości.

  4. 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.

W programie Visual Studio 2022 istnieją różne interfejsy użytkownika programu Project Projektant w zależności od typu projektu. W języku C# .NET Framework i we wszystkich projektach Języka Visual Basic używane są starsze Projektant .NET Project, ale projekty platformy .NET Core (i .NET 5 i nowsze) używają bieżącego Projektant projektu .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 Projektant projektu.

Zmiana katalogu wyjściowego kompilacji

Ta procedura dotyczy projektów języka C# w programie Visual Studio 2022 przeznaczonych dla platformy .NET Core lub .NET 5 i nowszych.

  1. Wyczyść projekt lub rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Kompiluj>czyste rozwiązanie).

  2. Kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierz polecenie Właściwości.

  3. Rozwiń sekcję Build (Kompilacja) i przewiń w dół do podsekcji Output (Dane wyjściowe).

  4. Znajdź ścieżkę danych wyjściowych base dla języka C#i wpisz ścieżkę do wygenerowania danych wyjściowych (bezwzględnych lub względnych względem katalogu głównego projektu) lub wybierz pozycję Przeglądaj, aby przejść 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.

    Zrzut ekranu przedstawiający właściwość Ścieżka wyjściowa dla projektu języka C# platformy .NET Core.

    Uwaga

    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 Eksplorator rozwiązań, wybierz polecenie Edytuj plik projektu i 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.

  1. Wyczyść rozwiązanie, aby usunąć wszystkie istniejące pliki wyjściowe (Kompiluj>czyste rozwiązanie).

  2. Kliknij jeden projekt w rozwiązaniu.

  3. W menu Project (Projekt) kliknij pozycję Properties (Właściwości).

  4. W każdym projekcie w zależności od typu wybierz pozycję Kompiluj lub Skompiluj, a następnie ustaw ścieżkę wyjściową lub ścieżkę wyjściową podstawową do folderu, który ma być używany dla wszystkich projektów w rozwiązaniu.

  5. 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 polecenia 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.

  6. 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 dane wyjściowe nie są generowane w określonej lokalizacji, upewnij się, że tworzysz odpowiednią konfigurację (na przykład Debuguj lub Zwolnij), wybierając ją na pasku menu programu Visual Studio.

Zrzut ekranu przedstawiający selektor konfiguracji kompilacji w programie Visual Studio 2022.

Ustawianie pośredniego katalogu wyjściowego dla projektu

Ta procedura dotyczy projektów języka C# w programie Visual Studio 2022 przeznaczonych dla platformy .NET Core lub .NET 5 i nowszych.

  1. Wyczyść projekt, aby usunąć wszystkie istniejące pliki wyjściowe.

  2. Otwórz plik projektu.

  3. 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 $(MSBuildProjectName)MSBuild , $(MSBuildProjectDirectory). Aby uzyskać więcej właściwości, których można użyć, zobacz MsBuild reserved i dobrze znane właściwości.

  4. 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 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.

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 danych wyjściowych artefaktów.