XML-файлы правил для страниц свойствProperty Page XML rule files

Страницы свойств проекта в интегрированной среде разработки настраиваются XML-файлами в папке rules по умолчанию.The project property pages in the IDE are configured by XML files in the default rules folder. XML-файлы описывают имена правил, категории и отдельные свойства, их тип данных, значения по умолчанию и способ их отображения.The XML files describe the names of the rules, the categories, and the individual properties, their data type, default values, and how to display them. При задании свойства в интегрированной среде разработки новое значение сохраняется в файле проекта.When you set a property in the IDE, the new value is stored in the project file.

Путь к папке rules по умолчанию зависит от языкового стандарта и используемой версии Visual Studio.The path to the default rules folder depends on the locale and the version of Visual Studio in use. В командной строке разработчика Visual Studio 2015 или более ранних версий папка правил располагается по пути %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\<locale> .In a Visual Studio 2015 or earlier developer command prompt, the rules folder is %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\<locale> . Для Visual Studio 2015 <version> имеет значение v140 .The <version> value is v140 in Visual Studio 2015. <locale> определяет код языка, например 1033 для английского языка.The <locale> is an LCID, for example, 1033 for English. У вас будет отдельный путь для каждого устанавливаемого выпуска Visual Studio и каждого языка.You'll use a different path for each edition of Visual Studio that's installed, and for each language. Например, путь к папке с правилами по умолчанию для Visual Studio 2015 Community на английском языке может выглядеть так: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\1033\ .For example, the default rules folder path for Visual Studio 2015 Community edition in English could be C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\1033\ .

Путь к папке rules по умолчанию зависит от языкового стандарта и используемой версии Visual Studio.The path to the default rules folder depends on the locale and the version of Visual Studio in use. В командной строке разработчика Visual Studio 2017 папка правил располагается по пути %VSINSTALLDIR%Common7\IDE\VC\VCTargets\<locale>\ .In a Visual Studio 2017 developer command prompt, the rules folder is %VSINSTALLDIR%Common7\IDE\VC\VCTargets\<locale>\ . <locale> определяет код языка, например 1033 для английского языка.The <locale> is an LCID, for example, 1033 for English. В командной строке разработчика Visual Studio 2015 или более ранних версий папка правил располагается по пути %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\<locale>\ , где <version> для Visual Studio 2015 имеет значение v140 .In a Visual Studio 2015 or earlier developer command prompt, the rules folder is %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\<locale>\ , where the <version> value is v140 in Visual Studio 2015. У вас будет отдельный путь для каждого устанавливаемого выпуска Visual Studio и каждого языка.You'll use a different path for each edition of Visual Studio that's installed, and for each language. Например, путь к папке с правилами по умолчанию для Visual Studio 2017 Community на английском языке может выглядеть так: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\1033\ .For example, the default rules folder path for Visual Studio 2017 Community edition in English could be C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\1033\ .

Путь к папке rules по умолчанию зависит от языкового стандарта и используемой версии Visual Studio.The path to the default rules folder depends on the locale and the version of Visual Studio in use. В командной строке разработчика Visual Studio 2019 или более поздних версий папка правил располагается по пути %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\<locale>\ , где <version> для Visual Studio 2019 имеет значение v160 .In a Visual Studio 2019 or later developer command prompt, the rules folder is %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\<locale>\ , where the <version> value is v160 in Visual Studio 2019. <locale> определяет код языка, например 1033 для английского языка.The <locale> is an LCID, for example, 1033 for English. В Visual Studio 2017 папка правил располагается по пути %VSINSTALLDIR%Common7\IDE\VC\VCTargets\<locale>\ .In Visual Studio 2017, the rules folder is %VSINSTALLDIR%Common7\IDE\VC\VCTargets\<locale>\ . В командной строке разработчика Visual Studio 2015 или более ранних версий папка правил располагается по пути %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\<locale>\ .In a Visual Studio 2015 or earlier developer command prompt, the rules folder is %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\<version>\<locale>\ . У вас будет отдельный путь для каждого устанавливаемого выпуска Visual Studio и каждого языка.You'll use a different path for each edition of Visual Studio that's installed, and for each language. Например, путь к папке с правилами по умолчанию для Visual Studio 2019 Community на английском языке может выглядеть так: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\1033\ .For example, the default rules folder path for Visual Studio 2019 Community edition in English could be C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\1033\ .

Вам нужно только понять внутреннюю работу этих файлов и интегрированную среду разработки Visual Studio в нескольких сценариях:You only need to understand the internal workings of these files and the Visual Studio IDE in a couple of scenarios:

  • Необходимо создать пользовательскую страницу свойств илиYou want to create a custom property page, or
  • Вы хотите настроить свойства проекта без использования интегрированной среды разработки Visual Studio.You want to customize your project properties without use of the Visual Studio IDE.

Содержимое файлов правилContents of rule files

Сначала откроем страницы свойств для проекта.First, let's open the property pages for a project. Щелкните правой кнопкой мыши узел проекта в Обозреватель решений и выберите пункт свойства .Right-click on the project node in Solution Explorer and choose Properties :

Отображение диалогового окна свойств проекта C++ Visual Studio

Каждый узел в разделе Свойства конфигурации называется правилом .Each node under Configuration Properties is called a rule . Правило иногда представляет собой один инструмент, например компилятор.A rule sometimes represents a single tool like the compiler. Как правило, термин указывает на то, что имеет свойства, которые выполняются и могут давать некоторые выходные данные.In general, the term refers to something that has properties, that executes and that may produce some output. Каждое правило заполняется из XML-файла в папке Rules Default.Each rule is populated from an XML file in the default rules folder. Например, представленное здесь правило C/C++ заполняется "cl.xml" .For example, the C/C++ rule that's shown here is populated by `cl.xml' .

Каждое правило имеет набор свойств, упорядоченных по категориям .Each rule has a set of properties, which are organized into categories . Каждый подчиненный узел в правиле представляет категорию.Each sub-node under a rule represents a category. Например, узел Оптимизация в C/C++ содержит все свойства, связанные с оптимизацией средства компилятора.For example, the Optimization node under C/C++ contains all the optimization-related properties of the compiler tool. Свойства и их значения отображаются в формате сетки на правой панели.The properties and their values get rendered in a grid format on the right pane.

Можно открыть cl.xml в блокноте или любом РЕДАКТОРЕ XML.You can open cl.xml in notepad or any XML editor. Вы увидите корневой узел с именем Rule .You'll see a root node called Rule. Он определяет тот же список свойств, которые отображаются в пользовательском интерфейсе вместе с дополнительными метаданными.It defines the same list of properties that get displayed in the UI, along with additional metadata.

<?xml version="1.0" encoding="utf-8"?>
<!--Copyright, Microsoft Corporation, All rights reserved.-->
<Rule Name="CL" PageTemplate="tool" DisplayName="C/C++" SwitchPrefix="/" Order="10" xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Rule.Categories>
    <Category Name="General" DisplayName="General" />
    <Category Name="Optimization" DisplayName="Optimization" />
    <Category Name="Preprocessor" DisplayName="Preprocessor" />
    <Category Name="Code Generation" DisplayName="Code Generation" />
    <Category Name="Language" DisplayName="Language" />
    <Category Name="Precompiled Headers" DisplayName="Precompiled Headers" />
    <Category Name="Output Files" DisplayName="Output Files" />
    <Category Name="Browse Information" DisplayName="Browse Information" />
    <Category Name="Advanced" DisplayName="Advanced" />
    <Category Name="All Options" DisplayName="All Options" Subtype="Search" />
    <Category Name="Command Line" DisplayName="Command Line" Subtype="CommandLine" />
  </Rule.Categories>
  <!-- . . . -->
</Rule>

Существует один XML-файл для каждого узла в разделе Свойства конфигурации в пользовательском интерфейсе страниц свойств.There's one XML file for every node under Configuration Properties in the property pages UI. В пользовательском интерфейсе можно добавлять или удалять правила. это делается путем включения или удаления расположений в соответствующих XML-файлах в проекте.You can add or remove rules in the UI: it's done by including or removing locations to corresponding XML files in the project. Например, как Microsoft.CppBuild.targets (найден один уровень выше, чем папка 1033), включает cl.xml :For example, it's how Microsoft.CppBuild.targets (found one level higher than the 1033 folder) includes cl.xml :

<PropertyPageSchema Condition="'$(ConfigurationType)' != 'Utility'" Include="$(VCTargetsPath)$(LangID)\cl.xml"/>

При чередующихся cl.xml данных у вас есть такая базовая платформа:If you strip cl.xml of all data, you have this basic framework:

<?xml version="1.0" encoding="utf-8"?>
<Rule>
  <Rule.DataSource />
  <Rule.Categories>
    <Category />
    <!-- . . . -->
  </Rule.Categories>
  <BoolProperty />
  <EnumProperty />
  <IntProperty />
  <StringProperty />
  <StringListProperty />
</Rule>

В следующем разделе описаны все основные элементы и некоторые метаданные, которые можно присоединить.The next section describes each major element and some of the metadata that you can attach.

Атрибуты правилаRule attributes

<Rule> Элемент — это корневой узел в XML-файле.A <Rule> element is the root node in the XML file. Он может иметь множество атрибутов:It can have many attributes:

<Rule Name="CL" PageTemplate="tool" SwitchPrefix="/" Order="10"
          xmlns="http://schemas.microsoft.com/build/2009/properties"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Rule.DisplayName>
    <sys:String>C/C++</sys:String>
  </Rule.DisplayName>
  • Name : Атрибут name является ИДЕНТИФИКАТОРом для Rule .Name : The Name attribute is an ID for the Rule. Оно должно быть уникальным по отношению ко всем XML-файлам страницы свойств для проекта.It needs to be unique among all the property page XML files for a project.

  • PageTemplate : Значение этого атрибута используется в пользовательском интерфейсе для выбора из коллекции шаблонов пользовательского интерфейса.PageTemplate : The value of this attribute is used by the UI to choose from a collection of UI templates. Шаблон tool отображает свойства в виде стандартной таблицы.The "tool" template renders the properties in a standard grid format. Другими встроенными значениями для этого атрибута являются debugger и generic.Other in-built values for this attribute are "debugger" and "generic". См. описание узлов Debugging и General соответственно, чтобы узнать о формате, который дает указание этих значений.See the Debugging node and General node, respectively, to see the UI format resulting from specifying these values. В пользовательском интерфейсе шаблона страницы "отладчик" для переключения между свойствами различных отладчиков используется раскрывающийся список.The UI for "debugger" page template uses a drop-down box to switch between the properties of different debuggers. Шаблон "generic" отображает разные категории свойств на одной странице, в отличие от наличия нескольких вложенных узлов категории в Rule узле.The "generic" template displays different property categories all in one page, as opposed to having multiple category sub-nodes under the Rule node. Этот атрибут является просто предложением пользовательского интерфейса.This attribute is just a suggestion to the UI. XML-файл разработан как независимый от пользовательского интерфейса.The XML file is designed to be UI independent. Другой пользовательский интерфейс может использовать этот атрибут в иных целях.A different UI might use this attribute for different purposes.

  • SwitchPrefix : Префикс, используемый в командной строке для переключателей.SwitchPrefix : The prefix used in the command line for the switches. Значение параметра приведет к тому, "/" что параметры будут выглядеть так, как /ZI , /nologo , /W3 и т. д.A value of "/" would result in switches that look like /ZI , /nologo , /W3 , and so on.

  • Order : Предложение для клиента потенциального пользовательского интерфейса в относительном расположении по Rule сравнению со всеми остальными правилами в системе.Order : A suggestion to a prospective UI client on the relative location of this Rule compared to all other rules in the system.

  • xmlns : Стандартный XML-элемент.xmlns : A standard XML element. Видно, что указано три пространства имен.You can see three namespaces listed. Эти атрибуты соответствуют пространствам имен для классов десериализации XML, схемы XML и пространства имен System соответственно.These attributes correspond to the namespaces for the XML deserialization classes, XML schema, and system namespace, respectively.

  • DisplayName : Имя, отображаемое в пользовательском интерфейсе страницы свойств Rule узла.DisplayName : The name that's shown on the property page UI for the Rule node. Это значение не локализуется.This value is localized. Мы создали DisplayName как дочерний элемент, Rule а не как атрибут (например Name , или SwitchPrefix ) из-за внутренних требований к средству локализации.We created DisplayName as a child element of Rule rather than as an attribute (like Name or SwitchPrefix) because of internal localization tool requirements. С точки зрения XML обе они эквивалентны.From an XML perspective, both are equivalent. Таким образом, вы можете сделать его атрибутом, чтобы убрать все лишнее, или оставить все как есть.So, you can just make it an attribute to reduce clutter or leave it as it is.

  • DataSource : Это важное свойство указывает системе проекта на необходимость чтения и записи значения свойства, а также его группирование (объяснено далее).DataSource : This important property tells the project system the location to read and write the property value, and its grouping (explained later). Для cl.xml используются следующие значения:For cl.xml , these values are:

    <DataSource Persistence="ProjectFile" ItemType="ClCompile" Label="" HasConfigurationCondition="true" />
    
    • Persistence="ProjectFile" сообщает системе проектов, что все свойства для Rule должны быть записаны в файл проекта или в файл страницы свойств (в зависимости от того, какой узел использовался для создания страниц свойств).Persistence="ProjectFile" tells the project system that all properties for the Rule should be written to the project file or the property sheet file (depending on which node was used to spawn the property pages). Другое возможное значение — "UserFile" , которое будет записывать значение в .user файл.The other possible value is "UserFile", which will write the value to the .user file.

    • ItemType="ClCompile" сообщает, что свойства будут храниться в виде метаданных ItemDefinition или метаданных элемента (только в том случае, если страницы свойств были порождены от узла файла в обозревателе решений) этого типа элемента.ItemType="ClCompile" says that the properties will be stored as ItemDefinition metadata or item metadata (the latter only if the property pages were spawned from a file node in solution explorer) of this item type. Если это поле не задано, свойство записывается как общее свойство в PropertyGroup.If this field isn't set, then the property is written as a common property in a PropertyGroup.

    • Label="" указывает, что при записи свойств в виде метаданных ItemDefinition метка родительского объекта ItemDefinitionGroup будет пустой (каждый элемент MSBuild может иметь метку).Label="" indicates that when the properties are written as ItemDefinition metadata, the label of the parent ItemDefinitionGroup will be empty (every MSBuild element can have a Label). Visual Studio 2017 и более поздних версий использует группы с меткой для перехода по файлу проекта VCXPROJ.Visual Studio 2017 and later use labeled groups to navigate the .vcxproj project file. Группы, которые содержат большинство Rule свойств, имеют пустую строку в качестве метки.The groups that contain most Rule properties have an empty string as a label.

    • HasConfigurationCondition="true" предписывает системе проектов прикрепить условие конфигурации к значению, чтобы оно вступало в силу только для текущей конфигурации проекта (условие можно прикрепить к родительской группе или самому значению).HasConfigurationCondition="true" tells the project system to affix a configuration condition to the value so that it takes effect only for the current project configuration (the condition could be affixed to the parent group or the value itself). Например, откройте страницы свойств в узле проекта и установите значение "Да" для свойства Обрабатывать предупреждения как ошибки в разделе Свойства конфигурации > C/C++ Общие .For example, open the property pages off the project node and set the value of the property Treat Warnings As Error under Configuration Properties > C/C++ General to "Yes". Следующее значение записывается в файл проекта.The following value is written to the project file. Обратите внимание, что к родительскому объекту ItemDefinitionGroup прикреплено условие конфигурации.Notice the configuration condition attached to the parent ItemDefinitionGroup.

      <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
        <ClCompile>
          <TreatWarningAsError>true</TreatWarningAsError>
        </ClCompile>
      </ItemDefinitionGroup>
      

      Если это значение задано на странице свойств для конкретного файла, например stdafx.cpp , значение свойства должно быть записано под stdafx.cpp элементом в файле проекта, как показано ниже.If this value is set in the property page for a specific file, such as stdafx.cpp , then the property value should be written under the stdafx.cpp item in the project file as shown Here. Обратите внимание, что условие конфигурации напрямую прикрепляется к самим метаданным:Notice how the configuration condition is directly attached to the metadata itself:

      <ItemGroup>
        <ClCompile Include="stdafx.cpp">
          <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</TreatWarningAsError>
        </ClCompile>
      </ItemGroup>
      

    Другим атрибутом, DataSource не указанным здесь, является PersistedName .Another attribute of DataSource not listed here is PersistedName. Его можно использовать для представления свойства в файле проекта под другим именем.You can use this attribute to represent a property in the project file using a different name. По умолчанию для этого атрибута задано значение свойства Name .By default, this attribute is set to the property's Name.

    Отдельное свойство может переопределить свойство DataSource родительского элемента Rule .An individual property can override the DataSource of its parent Rule. В этом случае расположение для значения этого свойства будет отличаться от других свойств в Rule .In that case, the location for that property's value will be different from other properties in the Rule.

  • Существуют и другие атрибуты Rule , включая Description и SupportsFileBatching , которые здесь не показаны.There are other attributes of a Rule, including Description and SupportsFileBatching, that aren't shown here. Полный набор атрибутов, применимых к Rule или для любого другого элемента, можно получить, просмотрев документацию по этим типам.The full set of attributes applicable to a Rule or on any other element can be obtained by browsing the documentation for these types. Кроме того, можно проверить открытые свойства для типов в пространстве имен Microsoft.Build.Framework.XamlTypes в сборке Microsoft.Build.Framework.dll.Alternately, you can examine the public properties on the types in the Microsoft.Build.Framework.XamlTypes namespace in the Microsoft.Build.Framework.dll assembly.

  • DisplayName , PageTemplate и Order — это свойства, связанные с пользовательским интерфейсом, которые имеются в этой независимой от пользовательского интерфейса модели данных.DisplayName , PageTemplate , and Order are UI-related properties that are present in this otherwise UI-independent data model. Эти свойства почти наверняка будут использоваться любым пользовательским интерфейсом, служащим для отображения страниц свойств.These properties are almost certain to be used by any UI that is used to display the property pages. DisplayName и Description — это два свойства, которые находятся почти во всех элементах в XML-файле.DisplayName and Description are two properties that are present on almost all elements in the XML file. И эти два свойства являются только локализованными.And, these two properties are the only ones that are localized.

Элементы категорииCategory elements

RuleМожет иметь несколько Category элементов.A Rule can have multiple Category elements. Порядок, в котором категории перечислены в XML-файле, является предложением пользовательского интерфейса для вывода категорий в том же порядке.The order in which the categories are listed in the XML file is a suggestion to the UI to display the categories in the same order. Например, порядок категорий в узле C/C++ , который отображается в пользовательском интерфейсе, совпадает с порядком в cl.xml .For example, the order of the categories under the C/C++ node you see in the UI is the same as the order in cl.xml . Пример категории выглядит следующим образом:A sample category looks like this:

<Category Name="Optimization">
  <Category.DisplayName>
    <sys:String>Optimization</sys:String>
  </Category.DisplayName>
</Category>

В этом фрагменте Name показаны DisplayName атрибуты и, которые были описаны ранее.This snippet shows the Name and DisplayName attributes that have been described before. Опять же, существуют и другие атрибуты, Category которые могут не отображаться в примере.Once again, there are other attributes a Category can have that aren't shown in the example. Узнать о них можно, прочитав документацию или изучив сборки с помощью ildasm.exe .You can learn about them by reading the documentation or by examining the assemblies using ildasm.exe .

Элементы свойствProperty elements

Большая часть файла правил состоит из Property элементов.Most of the rule file consists of Property elements. Они содержат список всех свойств в Rule .They contain the list of all properties in a Rule. Каждое свойство может иметь один из пяти возможных типов, показанных в базовой платформе: BoolProperty , EnumProperty , IntProperty , StringProperty и StringListProperty .Each property can be one of the five possible types shown in the basic framework: BoolProperty, EnumProperty, IntProperty, StringProperty, and StringListProperty. В файле могут быть только некоторые из этих типов.You might have only a few of those types in your file. Свойство имеет ряд атрибутов, которые позволяют подробно описать его.A property has a number of attributes that allow it to be described in detail. StringPropertyОписание описано здесь.The StringProperty is described here. Остальные похожи.The rest are similar.

<StringProperty Subtype="file" Name="ObjectFileName" Category="Output Files" Switch="Fo">
  <StringProperty.DisplayName>
    <sys:String>Object File Name</sys:String>
  </StringProperty.DisplayName>
  <StringProperty.Description>
    <sys:String>Specifies a name to override the default object file name; can be file or directory name.(/Fo[name])</sys:String>
  </StringProperty.Description>
</StringProperty>

Большинство атрибутов в этом фрагменте коды было описано выше.Most of the attributes in the snippet have been described before. Новые объекты — Subtype , Category и Switch .The new ones are Subtype, Category, and Switch.

  • Subtype атрибут доступен только для StringProperty StringListProperty элементов и.Subtype is an attribute available only for StringProperty and StringListProperty elements. Он предоставляет контекстные сведения.It gives contextual information. Например, значение file указывает, что свойство представляет путь к файлу.For example, the value file indicates that the property represents a file path. Visual Studio использует такие контекстные сведения для улучшения возможностей редактирования.Visual Studio uses such contextual information to enhance the editing experience. Например, он может предоставить окно проводника Windows, позволяющее пользователю выбрать файл в качестве редактора свойства.For instance, it may provide a Windows Explorer window that allows the user to choose the file visually as the property's editor.

  • Category : Категория, к которой относится это свойство.Category : The category under which this property falls. Попробуйте найти это свойство в категории Выходные файлы в пользовательском интерфейсе.Try to find this property under the Output Files category in the UI.

  • Switch : Если правило представляет средство, такое как средство компилятора, большинство Rule свойств передаются как параметры во время сборки в исполняемый файл средства.Switch : When a rule represents a tool such as the compiler tool, most Rule properties get passed as switches to the tool executable at build time. Значение этого атрибута указывает, какой литерал переключения следует использовать.The value of this attribute indicates which switch literal to use. В <StringProperty> примере указывается, что параметр должен иметь значение Fo .The <StringProperty> example specifies that its switch should be Fo . В сочетании с SwitchPrefix атрибутом родительского элемента Rule это свойство передается исполняемому файлу как /Fo"Debug\" .Combined with the SwitchPrefix attribute on the parent Rule, this property is passed to the executable as /Fo"Debug\" . Он отображается в командной строке для C/C++ в пользовательском интерфейсе страницы свойств.It's visible in the command line for C/C++ in the property page UI.

    Другие атрибуты свойства:Other property attributes include:

  • Visible : Если вы не хотите, чтобы свойство отображалось на страницах свойств, но оно должно быть доступно во время сборки, присвойте этому атрибуту значение false .Visible : If you don't want your property to appear in the property pages, but want it available at build time, set this attribute to false.

  • ReadOnly : Если вы хотите предоставить доступ к представлению значения этого свойства только для чтения на страницах свойств, установите для этого атрибута значение true .ReadOnly : If you want to provide a read-only view of this property's value in the property pages, set this attribute to true.

  • IncludeInCommandLine . Во время сборки средство может не требовать некоторых свойств.IncludeInCommandLine : At build time, a tool might not need some of its properties. Задайте для этого атрибута значение false , чтобы предотвратить передачу определенного свойства.Set this attribute to false to prevent a particular property from being passed.