Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas pracy z udostępnionym kodem w repozytorium kodu, na przykład w usłudze GitHub, w kontroli źródła lub w dowolnej udostępnionej bazie kodu, możesz użyć programu MSBuild, aby tymczasowo dostosować kompilacje na komputerze lokalnym. Możesz tymczasowo odtworzyć usterkę lub przetestować inną konfigurację i zachować te dostosowania niezależnie od plików w udostępnionym repozytorium kodu. W tym artykule opisano niektóre rozszerzenia kompilacji dostępne w programie MSBuild, które umożliwiają tworzenie niestandardowych konfiguracji kompilacji specyficznych dla użytkownika lub tylko lokalnie.
Wymagania wstępne
- Projekt programu Visual Studio, który kompiluje się przy użyciu programu MSBuild.
Korzystanie z pliku użytkownika
W tym kontekście można użyć pliku $(MSBuildProjectFullPath).user, nazywanego również plikiem użytkownika, do przechowywania rozszerzeń, opcji lub zmiennych specyficznych dla twojego lokalnego komputera. Plik użytkownika nie jest przeznaczony do przekazania do kontroli źródła i jest automatycznie sprawdzany przy użyciu polecenia .gitignore. Aby uzyskać bardziej obszerne zmiany, zmień sam projekt, aby w przyszłości osoby odpowiedzialne nie musiały wiedzieć o tym mechanizmie rozszerzenia.
W przypadku obsługiwanych projektów wielokierunkowych plik użytkownika jest automatycznie importowany w kompilacjach wewnętrznych i kompilacjach zewnętrznych, dzięki czemu można utworzyć ten plik w ramach rozwiązania. Jeśli pracujesz nad innym typem kompilacji, możesz użyć pliku użytkownika, tworząc go w rozwiązaniu, a następnie importując go w pliku projektu w następujący sposób:
<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/>
Korzystanie z msBuildExtensionsPath i MSBuildUserExtensionsPath
Zgodnie z konwencją wiele podstawowych plików logiki kompilacji importuje plik $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\TargetFileName\ImportBefore\*.targets przed ich zawartością, a plik $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\TargetFileName\ImportAfter\*.targets po niej. Ta konwencja umożliwia zainstalowanym zestawom SDK rozszerzanie logiki kompilacji typowych typów projektów.
Ta sama struktura katalogów jest przeszukiwana w $(MSBuildUserExtensionsPath), który jest folderem użytkownika %LOCALAPPDATA%\Microsoft\MSBuild. Pliki umieszczone w tym folderze są importowane dla wszystkich buildów odpowiedniego typu projektu, które uruchamiane są z użyciem poświadczeń tego użytkownika.
Rozszerzenia użytkownika można wyłączyć, ustawiając właściwości nazwane według zaimportowanego pliku, zgodnie ze wzorcem ImportUserLocationsByWildcardBefore\<ImportingFileNameWithNoDots>. Na przykład ustawienie ImportUserLocationsByWildcardBeforeMicrosoftCommonProps na false uniemożliwia importowanie $(MSBuildUserExtensionsPath\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\* elementu.
Tworzenie niestandardowych warunków na podstawie języka projektu
Jeśli potrzebujesz różnych zachowań w zależności od języka .NET: C#, Visual Basic lub F#, możesz dodać grupy właściwości z warunkami, które zależą od rozszerzenia pliku projektu, <MSBuildProjectExtension> aby zdefiniować właściwości specyficzne dla języka i ich wartości.
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.vbproj'">
<!-- Put VB-only property definitions here -->
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.fsproj'">
<!-- Put F#-only property definitions here -->
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<!-- Put C#-only property definitions here -->
</PropertyGroup>