0

有用于使用 Visual Studio 2005 编译 x64 程序集的构建规则(如下)。它运行良好,但问题出现在 Windows8 机器上。编译器触发下一个错误:

1>Assembling x64...
1>Project : error PRJ0003 : Error spawning 'cmd.exe'.

而 32bin 程序集构建成功。任何想法如何解决它?

该规则位于“C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCProjectDefaults”目录中,ml64.exe 位于“C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\amd64 ”和“C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\x86_amd64”。

< ?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile Name="Microsoft Macro Assembler x64" Version="8.00">

        <Properties>
            <BooleanProperty
                Name="NoLogo"
                DisplayName="Suppress Startup Banner"
                Description="Suppress the display of the startup banner and information messages.     (/nologo)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/nologo"
                DefaultValue="true"
            />
            <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="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/AT"
            />
            <StringProperty
                Name="ObjectFileName"
                DisplayName="Object File Name"
                PropertyPageName="Object File"
                Description="Specifies the name of the output object file.     (/Fo:[file])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Fo&quot;[value]&quot;"
                DefaultValue="$(IntDir)\$(InputName).obj"
            />
            <EnumProperty
                Name="PreserveIdentifierCase"
                DisplayName="Preserve Identifier Case"
                Description="Specifies preservation of case of user identifiers.     (/Cp, /Cu, /Cx)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                DefaultValue="0"

                <Values>
                    <EnumValue
                        Value="0"
                        DisplayName="Default"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/Cp"
                        DisplayName="Preserves Identifier Case (/Cp)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/Cu"
                        DisplayName="Maps all identifiers to upper case. (/Cu)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/Cx"
                        DisplayName="Preserves case in public and extern symbols. (/Cx)"
                    />
                </Values>
            </EnumProperty>
            <StringProperty
                Name="PreprocessorDefinitions"
                DisplayName="Preprocessor Definitions"
                Description="Defines a text macro with the given name.     (/D[symbol])"
                HelpURL="http://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="http://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="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Fl&quot;[value]&quot;"
            />
            <StringProperty
                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. Same as PAGE width.     (/Sl [width])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sl [value]"
            />
            <StringProperty
                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. Same as PAGE length.     (/Sp [length])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sp [value]"
            />
            <StringProperty
                Name="IncludePaths"
                DisplayName="Include Paths"
                Description="Sets path for include file. A maximum of 10 /I options is allowed.     (/I [path])"
                HelpURL="http://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="ListAllAvailableInformation"
                DisplayName="List All Available Information"
                PropertyPageName="Listing File"
                Description="Turns on listing of all available information.     (/Sa)"
                HelpURL="http://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="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/safeseh"
            />
            <BooleanProperty
                Name="AddFirstPassListing"
                DisplayName="Add First Pass Listing"
                PropertyPageName="Listing File"
                Description="Adds first-pass listing to listing file.     (/Sf)"
                HelpURL="http://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="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sg"
            />
            <BooleanProperty
                Name="DisableSymbolTable"
                DisplayName="Disable Symbol Table"
                PropertyPageName="Listing File"
                Description="Turns off symbol table when producing a listing.     (/Sn)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Sn"
            />
            <StringProperty
                Name="SourceListingSubTitle"
                DisplayName="Source Listing Subtitle"
                PropertyPageName="Listing File"
                Description="Specifies subtitle text for source listing. Same as SUBTITLE text.     (/Ss [subtitle])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Ss [value]"
            />
            <StringProperty
                Name="SourceListingTitle"
                DisplayName="Source Listing Title"
                PropertyPageName="Listing File"
                Description="Specifies title for source listing. Same as TITLE text.     (/St [title])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/St [value]"
            />
            <BooleanProperty
                Name="EnableFalseConditionalsInListing"
                DisplayName="Enable False Conditionals In Listing"
                PropertyPageName="Listing File"
                Description="Turns on false conditionals in listing.     (/Sx)"
                HelpURL="http://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="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                DefaultValue="3"

                <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="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/WX"
            />
            <BooleanProperty
                Name="MakeAllSymbolsPublic"
                DisplayName="Make All Symbols Public"
                PropertyPageName="Object File"
                Description="Makes all symbols public.     (/Zf)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zf"
            />
            <BooleanProperty
                Name="GenerateDebugInformation"
                DisplayName="Generate Debug Information"
                Description="Generates Debug Information.     (/Zi)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zi"
                DefaultValue="true"
            />
            <BooleanProperty
                Name="EnableMASM51Compatibility"
                DisplayName="Enable MASM 5.1 Compatibility"
                Description="Enables M510 option for maximum compatibility with MASM 5.1.     (/Zm)"
                HelpURL="http://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, 4, 8 or 16.     (/Zp1, /Zp2, /Zp4, /Zp8, /Zp16)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"

                <Values>
                    <EnumValue
                        Value="0"
                        DisplayName="Default"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/Zp1"
                        DisplayName="One Byte Boundary (/Zp1)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/Zp2"
                        DisplayName="Two Byte Boundary (/Zp2)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/Zp4"
                        DisplayName="Four Byte Boundary (/Zp4)"
                    />
                    <EnumValue
                        Value="4"
                        Switch="/Zp8"
                        DisplayName="Eight Byte Boundary (/Zp8)"
                    />
                    <EnumValue
                        Value="5"
                        Switch="/Zp16"
                        DisplayName="Sixteen Byte Boundary (/Zp16)"
                    />
                </Values>
            </EnumProperty>
            <BooleanProperty
                Name="PerformSyntaxCheckOnly"
                DisplayName="Perform Syntax Check Only"
                Description="Performs a syntax check only.     (/Zs)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/Zs"
            />
            <EnumProperty
                Name="CallingConvention"
                DisplayName="Calling Convention"
                PropertyPageName="Advanced"
                Description="Selects calling convention for your application.     (/Gc, /Gd. /Gz)"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"

                <Values>
                    <EnumValue
                        Value="0"
                        DisplayName="Default"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/Gd"
                        DisplayName="Use C-style Calling Convention (/Gd)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/Gz"
                        DisplayName="Use stdcall Calling Convention (/Gz)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/Gc"
                        DisplayName="Use Pascal Calling Convention (/Gc)"
                    />
                </Values>
            </EnumProperty>
            <EnumProperty
                Name="ErrorReporting"
                DisplayName="Error Reporting"
                PropertyPageName="Advanced"
                Description="Reports internal assembler errors to Microsoft.     (/errorReport:[method])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"

                <Values>
                    <EnumValue
                        Value="0"
                        Switch="/errorReport:prompt"
                        DisplayName="Prompt to send report immediately (/errorReport:prompt)"
                    />
                    <EnumValue
                        Value="1"
                        Switch="/errorReport:queue"
                        DisplayName="Prompt to send report at the next logon (/errorReport:queue)"
                    />
                    <EnumValue
                        Value="2"
                        Switch="/errorReport:send"
                        DisplayName="Automatically send report (/errorReport:send)"
                    />
                    <EnumValue
                        Value="3"
                        Switch="/errorReport:none"
                        DisplayName="Do not send report (/errorReport:none)"
                    />
                </Values>
            </EnumProperty>
            <StringProperty
                Name="BrowseFile"
                DisplayName="Generate Browse Information File"
                PropertyPageName="Advanced"
                Description="Specifies whether to generate browse information file and its optional name or location of the browse information file.     (/FR[name])"
                HelpURL="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrfml.asp"
                Switch="/FR&quot;[value]&quot;"
                Delimited="true"
                Inheritable="true"
            />
        </Properties>
    </CustomBuildRule>
</Rules>

4

1 回答 1

2

生成“cmd.exe”时出错。

您的机器非常混乱,Visual Studio 无法启动命令处理器。首先您需要检查是否cmd.exe仍然位于 c:\windows\system32 目录中。接下来,您需要检查您的环境变量是否仍然正确。这是更典型的事故,卸载程序往往会搞砸。

开始 + 控制面板、系统、高级、环境变量按钮。查看那里显示的系统变量。ComSpec 变量需要指向 c:\windows\system32\cmd.exe。Path 环境变量需要以 c:\windows\system32;c:\windows 开头。我使用这些目录的默认名称,它们在您的机器上不同的可能性很小。注销并重新登录以使更改生效。

于 2013-03-29T17:38:36.907 回答