Udostępnij za pośrednictwem


Visual Studio Integration (MSBuild)

Hosty Visual Studio MSBuild do ładowania i budowania projektów zarządzanych.Ponieważ MSBuild jest odpowiedzialny za projektu, niemal każdego projektu w MSBuild formacie mogą być pomyślnie używane w Visual Studio, nawet jeśli zostało napisane przez inne narzędzie i ma procesu tworzenia dostosowanego projektu.

W tym temacie opisano specyficznych aspektów Visual Studiow MSBuild hosting, które należy rozważyć w przypadku dostosowywania projektów i .targets pliki, które chcesz załadować i w Visual Studio.Te pomogą upewnij się, Visual Studio funkcje, takie jak technologia IntelliSense i debugowanie pracy dla projektu niestandardowych.

Rozszerzenia nazw plików projektu

MSBuild.exe rozpoznaje rozszerzenia nazw plików projektu, pasujących do wzorca. * proj.Jednakże Visual Studio rozpoznaje tylko podzbiór rozszerzeń nazw plików tych projektu, które określają system projektu specyficzne dla języka, który będzie ładował projektu.Visual Studionie ma niezależny od języka MSBuild opartych na systemie projektu.

Na przykład Visual C# projektu system ładuje pliki .csproj, ale Visual Studio nie jest w stanie załadować pliku .xxproj.Plik projektu dla plików źródłowych w języku dowolnego muszą używać tego samego rozszerzenia jako Visual Basic lub Visual C# pliki do załadowania do projektu Visual Studio.

Dobrze znane nazwy docelowej

Kliknięcie przycisku budować w Visual Studio będzie wykonywał domyślnego adresu docelowego w projekcie.Często, ten obiekt docelowy jest również nazwa Build.Wybór odbudować lub Clean polecenie dokona próby wykonać tarczę o tej samej nazwie w projekcie.Kliknięcie przycisku Opublikuj będzie wykonywał element docelowy o nazwie PublishOnly w projekcie.

Konfiguracje i na różnych platformach

Konfiguracje są reprezentowane w MSBuild projektów za pomocą właściwości pogrupowane w PropertyGroup element, który zawiera Condition atrybut.Visual Studiowygląda na te warunki, w celu utworzenia listy konfiguracje projektu i platform, aby wyświetlić.Aby pomyślnie wyodrębnić tej listy, warunków musi mieć format podobny do następującego:

Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "
Condition=" '$(Configuration)' == 'Release' " 
Condition=" '$(Something)|$(Configuration)|$(SomethingElse)' == 'xxx|Debug|yyy' "

Visual Studiowygląda na warunkach PropertyGroup, ItemGroup, Import, właściwość i elementy element w tym celu.

Dodatkowe akcje kompilacji

Visual StudioPozwala zmienić nazwę elementu typ pliku w projekcie z Tworzenie akcji właściwość Właściwości pliku okna.Compile, EmbeddedResource, Content, i None nazwy typu towarów są zawsze wyświetlane w tym menu, oraz inne nazwiska typu element już w projekcie.W celu zapewnienia, wszelkie nazwy typu elementu niestandardowego są zawsze dostępne w tym menu, można dodać nazwy do typu elementu o nazwie AvailableItemName.Na przykład, dodając do pliku projektu spowoduje dodanie niestandardowego typu JScript do tego menu dla wszystkich projektów, które go zaimportować:

<ItemGroup>
    <AvailableItemName Include="JScript"/>
</ItemGroup>

[!UWAGA]

Niektóre nazwy typu elementu są specjalne do Visual Studio , ale nie wymienione w tej listy rozwijanej.

W trakcie kompilatory

Jeśli to możliwe, Visual Studio spróbuje użyć wersji w procesie Visual Basic lub Visual C# kompilatory zwiększa jego wydajność.Aby to działało poprawnie muszą być spełnione następujące warunki:

  • W celu projektu, musi istnieć zadanie o nazwie Csc (dla Visual C# projekty) lub Vbc (dla Visual Basic projektów)

  • UseHostCompilerIfAvailable Parametr zadania musi być ustawiony na wartość true.

  • Obsługiwany jest tylko parametr, który należy określić wartości.Wszystkie parametry określone zadania są obsługiwane przez kompilator w procesie, ale niektóre wartości parametrów nie są obsługiwane.Następujące Csc wartości parametrów zadania nie są obsługiwane przez Visual C# wewnątrzprocesowego kompilatora:

    • NoConfig: false i wartości puste nie są obsługiwane.

    • ResponseFiles: niepustych wartości nie są obsługiwane.

    • AdditionalLibPaths: niepustych wartości nie są obsługiwane.

    • AddModules: niepustych wartości nie są obsługiwane.

    • CodePage: niezerowych wartości nie są obsługiwane.

    • GenerateFullPaths: true nie jest obsługiwany.

    • LinkResources: niepustych wartości nie są obsługiwane.

Jeśli te warunki nie są spełnione, projekt będzie kompilować za pomocą kompilatora wiersza polecenia zamiast wewnątrzprocesowego kompilatora.

Technologia IntelliSense czasu projektowania

Aby uzyskać obsługę technologii IntelliSense w Visual Studio przed kompilacji wygenerował zestawu danych wyjściowych, muszą być spełnione następujące warunki:

  • Musi być obiektem docelowym o nazwie Compile.

  • Albo Compile miejsce docelowe lub jednej z jego zależności należy wywołać zadanie kompilatora dla projektu, takie jak Csc lub Vbc.

  • Albo Compile miejsce docelowe lub jednej z jego zależności muszą, że kompilator do odbierania wszystkich niezbędnych parametrów dla IntelliSense, szczególnie wszystkie odwołania.

  • Muszą być spełnione warunki wymienione w sekcji "W trakcie kompilatory".

Tworzenie rozwiązań

W ramach Visual Studio, plik rozwiązania i porządkowanie kompilacji projektu są kontrolowane przez Visual Studio się.Podczas budowania rozwiązania z msbuild.exe w wierszu polecenia, MSBuild analizuje plik rozwiązania i nakazuje buduje projektu.W obu przypadkach projekty są wbudowane indywidualnie zamówienia współzależność, a odwołania do projektu na nie jest przesunięta.Z drugiej strony gdy poszczególne projekty są zbudowane z msbuild.exe, odwołania do projektu na jest przesunięta.

Podczas konstruowania wewnątrz Visual Studio, właściwość $(BuildingInsideVisualStudio) jest ustawiona na true.To może służyć w plikach projektu lub .targets do spowodować kompilacji odmiennie.

Wyświetlanie właściwości i elementy

Visual Studiorozpoznaje niektórych nazw właściwości i wartości.Na przykład, następująca właściwość w projekcie spowoduje, że Aplikację Windows się w Typ aplikacji pole w Project Designer.

<OutputType>WinExe</OutputType>

Wartość właściwości mogą być edytowane w Project Designer i zapisane w pliku projektu.Jeśli taka właściwość podano nieprawidłową wartość poprzez edycję strony Visual Studio będzie wyświetlany jest odpowiedni komunikat po załadowaniu projektu i zastąpić nieprawidłową wartość z wartością domyślną.

Visual Studiorozumie wartości domyślne niektórych właściwości.Te właściwości nie zostaną utrwalone w pliku projektu, chyba że wartości innej niż domyślna.

Właściwości o dowolnych nazwach nie są wyświetlane w Visual Studio.Aby zmodyfikować właściwości dowolnego w Visual Studio, należy otworzyć plik projektu w edytorze XML i edytować je ręcznie.Aby uzyskać więcej informacji, zobacz Edytowanie plików projektu w programie Visual Studio sekcji w dalszej części tego tematu.

Elementy zdefiniowane w projekt, korzystając z dowolnego elementu nazwy typów są domyślnie wyświetlane w oknie Solution Explorer ich węźle projektu.Aby ukryć element z ekranu, należy ustawić Visible metadane w celu false.Na przykład następujący przedmiot będzie uczestniczyć w procesie kompilacji, ale nie będzie wyświetlana w oknie Solution Explorer.

<ItemGroup>
    <IntermediateFile Include="cache.temp">
        <Visible>false</Visible>
    </IntermediateFile>
</ItemGroup>

Pozycji zgłoszonych w importowanych do projektu nie są wyświetlane domyślnie.Elementów tworzonych podczas procesu tworzenia nigdy nie są wyświetlane w oknie Solution Explorer.

Warunki na elementy i właściwości

Podczas kompilacji są w pełni przestrzegane wszystkie warunki.

Podczas określania wartości właściwości, aby wyświetlić właściwości że Visual Studio uważa konfiguracji zależne są szacowane w różny sposób niż właściwości uzna konfiguracji niezależnych.Dla właściwości uzna konfiguracji zależne, Visual Studio ustawia Configuration i Platform właściwości odpowiednio i powoduje, że MSBuild do ponownej oceny projektu.Dla właściwości uzna konfiguracji niezależne, jest nieokreślony, jak warunki będą oceniane.

Wyrażenia warunkowe na elementy są zawsze ignorowane dla celów decydowania, czy element ma być wyświetlany w oknie Solution Explorer.

Debugowanie

Aby znaleźć i uruchomienie zestawu danych wyjściowych i dołączanie debugera, Visual Studio potrzebuje właściwości OutputPath, AssemblyName, i OutputType poprawnie zdefiniowane.Debuger nie będzie można dołączyć, jeśli proces budowania nie spowodował kompilatora wygenerować plik .pdb.

Wykonanie docelowego czasu projektowania

Visual Studiopróbuje wykonać celów z niektórych nazw, podczas jej ładowania projektu.These targets include Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPaths, and CopyRunEnvironmentFiles.Visual Studiowykonuje te cele, czemu kompilator mogą być inicjowane w celu zapewnienia IntelliSense, debuger, które mogą być inicjowane i odwołania, wyświetlany w oknie Solution Explorer może być rozpoznana.Jeśli nie występują te cele, program project załadować i zbudować poprawnie, ale doświadczenie projektowania w Visual Studio nie będzie w pełni funkcjonalna.

Edytowanie plików projektu w programie Visual Studio

Aby edytować MSBuild projektu bezpośrednio, można otworzyć plik projektu w edytorze XML programu Visual Studio.

Aby zwolnić i edytować plik projektu w programie Visual Studio

  1. W Solution Explorer, otwórz menu skrótów dla projektu, a następnie wybierz Projektu Unload.

    Projekt jest oznaczony jako (niedostępne).

  2. W Solution Explorer, otwórz menu skrótów dla projektu niedostępny, a następnie wybierz Edytuj < plik projektu >.

    Plik projektu zostanie otwarty w edytorze XML programu Visual Studio.

  3. Edytuj, Zapisz, a następnie zamknij plik projektu.

  4. W Solution Explorer, otwórz menu skrótów dla projektu niedostępny, a następnie wybierz Projektu Reload.

Technologia IntelliSense i sprawdzania poprawności

Edytowanie plików projektu za pomocą edytora XML, technologia IntelliSense i sprawdzanie poprawności jest napędzana przez MSBuild pliki schematów.Te urządzenia zostały zainstalowane przez Visual Studiow pamięci podręcznej schematu, który znajduje się w Visual Studio lokalizacji instalacji] \Xml\Schemas folder.

Rdzeń MSBuild typy są zdefiniowane w Microsoft.Build.Core.xsd i typowych używane przez Visual Studio są zdefiniowane w Microsoft.Build.CommonTypes.xsd.Aby dostosować schematy, tak aby miały IntelliSense i sprawdzania poprawności dla niestandardowego typu nazwy, właściwości i zadań, można edytować Microsoft.Build.xsd lub utworzyć własny schemat, który zawiera CommonTypes lub Core schematów.Jeśli tworzysz swój własny schemat, trzeba będzie bezpośrednie XML edytor, znajdź go przy użyciu Właściwości okna.

Edytowanie wczytanych plików projektu

Visual Studioprzechowuje w pamięci podręcznej zawartości plików projektu i przywożone przez pliki projektu.Jeśli edytujesz plik załadowany projektu Visual Studio automatycznie wyświetli monit ponownie załadować projektu, tak, aby zmiany zostały wprowadzone.Jednak w przypadku edycji pliku, przywożone przez załadowany projektu, nie będzie monity nie Ładuj ponownie i musi zwolnić i odświeżyć projektu ręcznie, aby zmiany zostały wprowadzone.

Grup danych wyjściowych

Kilku celów, określonych w Microsoft.Common.targets mają nazwy kończące się na OutputGroups lub OutputGroupDependencies.Visual Studiowywołuje te cele, aby uzyskać określone listy wyników projektu.Na przykład SatelliteDllsProjectOutputGroup celem tworzy listę wszystkie zestawy kompilacji zostanie utworzony.Grupy te dane wyjściowe są używane przez funkcje, takie jak publikowanie, wdrażania i odwołania do projektu na.Projekty, które nie określają je ładuje i zbudować w Visual Studio, ale niektóre funkcje mogą nie działać poprawnie.

Rozpoznawanie odwołania

Rozdzielczość odniesienia jest proces polegający na użyciu towarów odniesienia, przechowywana w pliku projektu do Zlokalizuj zestawy rzeczywiste.Visual StudioMusisz wywołać rozdzielczości odniesienia w Pokaż szczegółowe właściwości dla każdego odwołania w Właściwości okna.Na poniższej liście opisano trzy typy odwołań i jak zostaną rozwiązane.

  • Odwołania do zestawów:

    Projekt wywołuje obiekt docelowy z znanej nazwy ResolveAssemblyReferences.Cel ten powinien wywoływać elementów z nazwą typu elementu ReferencePath.Każdy z tych elementów powinny mieć specyfikację elementu (wartość Include atrybut elementu) zawierających pełną ścieżkę do odwołania.Towary powinny mieć wszystkie metadane z pozycje nakładów przeszła oprócz następujących nowych metadanych:

    • CopyLocal, wskazując, czy zgromadzenie powinny być skopiowane do folderu danych wyjściowych, ustawiony na wartość true lub false.

    • OriginalItemSpec, zawierające pierwotnej specyfikacji elementu odniesienia.

    • ResolvedFrom, ustawiona na "{TargetFrameworkDirectory}", jeśli został on rozwiązany z .NET Framework katalogu.

  • Odwołania COM:

    Projekt wywołuje obiekt docelowy z znanej nazwy ResolveCOMReferences.Cel ten powinien wywoływać elementów z nazwą typu elementu ComReferenceWrappers.Każdy z tych elementów powinny mieć specyfikację elementu zawierającego pełną ścieżkę do międzyoperacyjny dla odwołania COM.Towary powinny mieć wszystkie metadane z metadanych przekazane za pośrednictwem, oprócz elementów wejściowych o nazwie CopyLocal, wskazująca, czy zgromadzenie powinny być skopiowane do folderu danych wyjściowych, ustawiony na wartość true lub false

  • Odwołania do macierzystego

    Projekt wywołuje obiekt docelowy z znanej nazwy ResolveNativeReferences.Cel ten powinien wywoływać elementów z nazwą typu elementu NativeReferenceFile.Towary powinny mieć wszystkie metadane z pozycje nakładów przeszła, oprócz nowego kawałek metadanych o nazwie OriginalItemSpec, zawierające pierwotnej specyfikacji elementu odniesienia.

Skróty wydajności

Jeśli zaczniesz debugowania w w interfejsie użytkownika programu Visual Studio (albo wybierając klawisz F5 lub wybierając program Debug: polecenie, Start Debugging na pasku menu), sprawdzanie aktualizacji szybko używa procesu tworzenia, aby poprawić wydajność.W niektórych przypadkach, gdzie buduje dostosowanego tworzenie plików, które z kolei budowane sprawdzanie aktualizacji szybko nie poprawnie identyfikuje zmienione pliki.Projekty, które wymagają bardziej szczegółowego sprawdzania aktualizacji można wyłączyć szybkie sprawdzanie przez ustawienie zmiennej środowiskowej DISABLEFASTUPTODATECHECK=1.Alternatywnie projekty tę można skonfigurować jako właściwość MSBuild w projekcie ani w pliku, który importuje projektu.

Regularne buduje w programie Visual Studio sprawdzanie aktualizacji szybko nie ma zastosowania, za projekt będzie budować tak, jakby wywoływana kompilacji w wierszu polecenia.

Zobacz też

Zadania

Jak: rozszerzenie procesu tworzenia programu Visual Studio

Informacje

Pozycja elementu (MSBuild)

Właściwość elementu (MSBuild)

Element docelowy (MSBuild)

CSC zadania

Vbc zadania

Koncepcje

Trwa uruchamianie budowania od wewnątrz IDE

Rejestrowanie rozszerzenia.NET Framework

Inne zasoby

Pojęcia dotyczące programu MSBuild