ReSharper by Language: MSBuild
MSBuild is a platform that is widely used for building applications. Using specific XML tags, you can define how your project should be built or executed. Using ReSharper you can do it faster.
Code inspection
If you mistype names of predefined elements or their attributes, ReSharper informs you about such mismatch via highlighting.
![ReSharper: Error highlighting in MSBuild ReSharper: Error highlighting in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Code_Highlighting_02.png)
If you try to reference the property that is not yet defined, ReSharper detects such cases as well.
![ReSharper: Warning highlighting in MSBuild ReSharper: Warning highlighting in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Code_Highlighting_01.png)
To look through the list of available inspections for MSBuild, open the Alt+R, O), and then expand the MSBuild node.
page of ReSharper options(Examples of quick-fixes
Define property
If you have not defined the property yet, but want to, use the quick-fix. ReSharper adds a new markup element with the corresponding name above the usage.
![ReSharper: 'Define property' quick-fix in MSBuild ReSharper: 'Define property' quick-fix in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Quick-Fixes__define_property_01.png)
Add required attribute
If for some reason you have not added required attributes or even do not remember what attributes are obligatory for an element, do not bother. ReSharper highlights such elements and suggests the quick-fix to fix the problem.
![ReSharper: 'Add required attribute' quick-fix in MSBuild ReSharper: 'Add required attribute' quick-fix in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Quick-Fixes__add_attribute_01.png)
Code style assistance
You can reformat MSBuild files according to your XML formatting styles.
Code completion
Code completion features are helpful when you start typing predefined elements and their attributes. ReSharper completes them, you save your time.
If you have custom elements and they are properly referenced, ReSharper also suggests them.
In the completion list, use the following icons to distinguish between the types of suggested items.
![]() | represents the PropertyGroup element only |
---|---|
![]() | represents attributes of elements |
![]() | represents the ItemGroup element and its items |
![]() | represents properties |
![]() | represents the Target element and targets |
![]() | represents tasks |
![]() | represents the UsingTask element only |
![]() | represents all other structure elements |
Navigation
To get a general idea about the structure of your build file, use the File Structure window. You can also double-click an element to navigate directly from the tree to its declaration in source code.
![ReSharper: File Structure for MSBuild ReSharper: File Structure for MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__File_Structure.png)
Use Navigate To features to jump to the declaration of a symbol or move through found usages.
![ReSharper: 'Navigate To' in MSBuild ReSharper: 'Navigate To' in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Navigate_To.png)
Search
ReSharper can find usages of properties, item groups and targets. All found usages are listed in the Find Results window.
![ReSharper: 'Find Usages' in MSBuild ReSharper: 'Find Usages' in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Find_Usages.png)
Refactorings
You can easily rename an element and get its usages updated correspondingly.
![ReSharper: 'Rename' refactoring in MSBuild ReSharper: 'Rename' refactoring in MSBuild](https://resources.jetbrains.com/help/img/dotnet/2021.1/ReSharper_by_Language__MSBuild__Refactorings__Rename_01.png)
You can delete elements safely. Before removing an element ReSharper performs a check whether the element has usages or not. If there are usages, they will be listed so that you can make necessary changes or discard the refactoring.