规则文件

更新:2007 年 11 月

规则文件(即 RULES 文件)是文件扩展名为 .rules 的 XML 文件。通过该文件,可以定义自定义生成规则,并将其并入 Visual C++ 项目的生成过程中。自定义生成规则与一个或多个文件扩展名相关联。利用自定义生成规则,可以将输入文件传递给工具,进而作为生成过程的一部分生成一个或多个输出文件。

使用“Visual C++ 自定义生成规则文件”对话框可以管理项目中的规则文件。

说明:

规则文件遵循与属性表(VSPROPS 文件)相同的属性继承准则。有关更多信息,请参见属性继承

将自定义生成规则并入生成过程中时,还可以指定运行这些生成规则的顺序。有关更多信息,请参见“工具生成顺序”对话框

示例

下面的示例 RULES 文件定义了一条自定义生成规则:

<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
   Name="Microsoft Macro Assembler"
   >
   <Rules>
      <CustomBuildRule
         Name="MASM"
         DisplayName="Microsoft Macro Assembler"
         CommandLine="ml.exe /nologo /c [AllOptions] [AdditionalOptions] /Fo&quot;$(IntDir)\$(InputName).obj&quot; /Ta [inputs]"
         Outputs="$(IntDir)\$(InputName).obj"
         FileExtensions="*.asm"
         ExecutionDescription="Assembling..."
         ShowOnlyRuleProperties="true"
         >
         <Properties>
            <BooleanProperty
               Name="TinyMemoryModelSupport"
               DisplayName="Tiny Memory Model Support"
               PropertyPageName="Advanced"
               Description="Enables tiny-memory-model support. Note that this is not equivalent to the .MODEL TINY directive.     (/AT)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/AT"
            />
            <BooleanProperty
               Name="UseCommonObjectFileFormat"
               DisplayName="Use Common Object File Format (COFF)"
               PropertyPageName="Object File"
               Description="Generates a common object file format type of object module.     (/coff)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/coff"
            />
            <BooleanProperty
               Name="PreserveIdentifierCase"
               DisplayName="Preserve Identifier Case"
               PropertyPageName="Identifiers"
               Description="Preserves case of all user identifiers.     (/Cp)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Cp"
            />
            <BooleanProperty
               Name="MapIdentifiersToUpperCase"
               DisplayName="Map Identifiers To Upper Case"
               PropertyPageName="Identifiers"
               Description="Maps all identifiers to upper case.     (/Cu)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Cu"
               DefaultValue="true"
            />
            <BooleanProperty
               Name="PreservePublicAndExternSymbolCase"
               DisplayName="Preserve Public and Extern Symbol Case"
               PropertyPageName="Identifiers"
               Description="Preserves case in public and extern symbols.     (/Cx)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Cx"
            />
            <StringProperty
               Name="PreprocessorDefinitions"
               DisplayName="Preprocessor Definitions"
               Description="Defines a text macro with the given name.     (/D[symbol])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/D&quot;[value]&quot;"
               Delimited="true"
               Inheritable="true"
            />
            <BooleanProperty
               Name="GeneratePreprocessedSourceListing"
               DisplayName="Generate Preprocessed Source Listing"
               PropertyPageName="Listing File"
               Description="Generates a preprocessed source listing to the Output Window.     (/EP)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/EP"
            />
            <StringProperty
               Name="AssembledCodeListingFile"
               DisplayName="Assembled Code Listing File"
               PropertyPageName="Listing File"
               Description="Generates an assembled code listing file.     (/Fl[file])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Fl&quot;[value]&quot;"
               Delimited="true"
            />
            <BooleanProperty
               Name="GenerateEmulatorFixups"
               DisplayName="Generate Emulator Fixups"
               PropertyPageName="Advanced"
               Description="Generates emulator fix-ups for floating-point arithmetic (mixed language only).     (/FPi)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/FPi"
            />
            <StringProperty
               Name="SourceBrowserFile"
               DisplayName="Source Browser File"
               PropertyPageName="Source Browser File"
               Description="Generates a source browser .sbr file.     (/Fr[file])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Fr&quot;[value]&quot;"
               Delimited="true"
            />
            <StringProperty
               Name="ExtendedSourceBrowserFile"
               DisplayName="Extended Source Browser File"
               PropertyPageName="Source Browser File"
               Description="Generates an extended form of a source browser .sbr file.     (/FR[file])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/FR&quot;[value]&quot;"
               Delimited="true"
            />
            <BooleanProperty
               Name="UsePascalCallingConvention"
               DisplayName="Use Pascal Calling Convention"
               PropertyPageName="Advanced"
               Description="Specifies use of FORTRAN- or Pascal-style function calling and naming conventions. Same as OPTION LANGUAGE:PASCAL.     (/Gc)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Gc"
            />
            <BooleanProperty
               Name="UseCStyleCallingConvention"
               DisplayName="Use C-Style Calling Convention"
               PropertyPageName="Advanced"
               Description="Specifies use of C-style function calling and naming conventions. Same as OPTION LANGUAGE:C.     (/Gd)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Gd"
            />
            <IntegerProperty
               Name="ExternalNameCharacterLimit"
               DisplayName="External Name Character Limit"
               PropertyPageName="Identifiers"
               Description="Restricts external names to number significant characters. The default is 31 characters.     (/H [number])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/H [value]"
               DefaultValue="31"
            />
            <StringProperty
               Name="IncludePaths"
               DisplayName="Include Paths"
               Description="Sets path for include file. A maximum of 10 /I options is allowed.     (/I [path])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/I &quot;[value]&quot;"
               Delimited="true"
               Inheritable="true"
            />
            <BooleanProperty
               Name="UseObjectModuleFileFormat"
               DisplayName="Use Object Module File Format"
               PropertyPageName="Object File"
               Description="Generates object module file format (OMF) type of object module.     (/omf)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/omf"
            />
            <BooleanProperty
               Name="ListAllAvailableInformation"
               DisplayName="List All Available Information"
               PropertyPageName="Listing File"
               Description="Turns on listing of all available information.     (/Sa)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sa"
            />
            <BooleanProperty
               Name="UseSafeExceptionHandlers"
               DisplayName="Use Safe Exception Handlers"
               PropertyPageName="Advanced"
               Description="Marks the object as either containing no exception handlers or containing exception handlers that are all declared with .SAFESEH.     (/safeseh)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/safeseh"
            />
            <BooleanProperty
               Name="AddInstructionTimings"
               DisplayName="Add Instruction Timings"
               PropertyPageName="Listing File"
               Description="Adds instruction timings to listing file.     (/Sc)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sc"
            />
            <BooleanProperty
               Name="AddFirstPassListing"
               DisplayName="Add First Pass Listing"
               PropertyPageName="Listing File"
               Description="Adds first-pass listing to listing file.     (/Sf)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sf"
            />
            <BooleanProperty
               Name="EnableAssemblyGeneratedCodeListing"
               DisplayName="Enable Assembly Generated Code Listing"
               PropertyPageName="Listing File"
               Description="Turns on listing of assembly-generated code.     (/Sg)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sg"
            />
            <IntegerProperty
               Name="SourceListingLineWidth"
               DisplayName="Source Listing Line Width"
               PropertyPageName="Listing File"
               Description="Sets the line width of source listing in characters per line. Range is 60 to 255 or 0. Default is 0. Same as PAGE width.     (/Sl [width])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sl [value]"
            />
            <BooleanProperty
               Name="DisableSymbolTable"
               DisplayName="Disable Symbol Table"
               PropertyPageName="Listing File"
               Description="Turns off symbol table when producing a listing.     (/Sn)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sn"
            />
            <IntegerProperty
               Name="SourceListingPageLength"
               DisplayName="Source Listing Page Length"
               PropertyPageName="Listing File"
               Description="Sets the page length of source listing in lines per page. Range is 10 to 255 or 0. Default is 0. Same as PAGE length.     (/Sp [length])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sp [value]"
            />
            <StringProperty
               Name="SourceListingSubTitle"
               DisplayName="Source Listing Subtitle"
               PropertyPageName="Listing File"
               Description="Specifies subtitle text for source listing. Same as SUBTITLE text.     (/Ss [subtitle])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Ss [value]"
               Delimited="true"
            />
            <StringProperty
               Name="SourceListingTitle"
               DisplayName="Source Listing Title"
               PropertyPageName="Listing File"
               Description="Specifies title for source listing. Same as TITLE text.     (/St [title])"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/St [value]"
               Delimited="true"
            />
            <BooleanProperty
               Name="EnableFalseConditionalsInListing"
               DisplayName="Enable False Conditionals In Listing"
               PropertyPageName="Listing File"
               Description="Turns on false conditionals in listing.     (/Sx)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Sx"
            />
            <EnumProperty
               Name="WarningLevel"
               DisplayName="Warning Level"
               Description="Sets the warning level, where level = 0, 1, 2, or 3.    (/W0, /W1, /W2, /W3)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               >
               <Values>
                  <EnumValue
                     Value="0"
                     Switch="/W0"
                     DisplayName="Warning Level 0 (/W0)"
                  />
                  <EnumValue
                     Value="1"
                     Switch="/W1"
                     DisplayName="Warning Level 1 (/W1)"
                  />
                  <EnumValue
                     Value="2"
                     Switch="/W2"
                     DisplayName="Warning Level 2 (/W2)"
                  />
                  <EnumValue
                     Value="3"
                     Switch="/W3"
                     DisplayName="Warning Level 3 (/W3)"
                  />
               </Values>
            </EnumProperty>
            <BooleanProperty
               Name="TreatWarningsAsErrors"
               DisplayName="Treat Warnings As Errors"
               Description="Returns an error code if warnings are generated.     (/WX)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/WX"
            />
            <BooleanProperty
               Name="GenerateLineInformation"
               DisplayName="Generate Line Information"
               PropertyPageName="Object File"
               Description="Generates line-number information in object file.     (/Zd)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Zd"
            />
            <BooleanProperty
               Name="MakeAllSymbolsPublic"
               DisplayName="Make All Symbols Public"
               PropertyPageName="Object File"
               Description="Makes all symbols public.     (/Zf)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Zf"
            />
            <BooleanProperty
               Name="GenerateCodeViewInformation"
               DisplayName="Generate CodeView Information"
               PropertyPageName="Object File"
               Description="Generates CodeView information in object file.     (/Zi)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Zi"
            />
            <BooleanProperty
               Name="EnableMASM51Compatibility"
               DisplayName="Enable MASM 5.1 Compatibility"
               Description="Enables M510 option for maximum compatibility with MASM 5.1.     (/Zm)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Zm"
            />
            <EnumProperty
               Name="PackAlignmentBoundary"
               DisplayName="Pack Alignment Boundary"
               PropertyPageName="Advanced"
               Description="Packs structures on the specified byte boundary. The alignment can be 1, 2, or 4.     (/Zp1, /Zp2, /Zp4)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               >
               <Values>
                  <EnumValue
                     Value="0"
                     Switch="/Zp1"
                     DisplayName="One Byte Boundary (/Zp1)"
                  />
                  <EnumValue
                     Value="1"
                     Switch="/Zp2"
                     DisplayName="Two Byte Boundary (/Zp2)"
                  />
                  <EnumValue
                     Value="2"
                     Switch="/Zp4"
                     DisplayName="Four Byte Boundary (/Zp4)"
                  />
               </Values>
            </EnumProperty>
            <BooleanProperty
               Name="PerformSyntaxCheckOnly"
               DisplayName="Perform Syntax Check Only"
               Description="Performs a syntax check only.     (/Zs)"
               HelpURL="https://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
               Switch="/Zs"
            />
         </Properties>
      </CustomBuildRule>
   </Rules>
</VisualStudioToolFile>

使用规则文件的 XML 架构定义可以验证您自己的 RULES 文件。

请参见

参考

属性表的 XML 架构定义

项目文件

了解自定义生成步骤和生成事件