2016-06-06 1 views
1


MSBuild를 사용하는 초보자 학습 곡선을 이끌고 있습니다. 일부 사용자 지정 빌드 vxproj 파일을 작업하고 Intellisense가 "false"오류로 보이는 것을보고합니다. "element"ItemGroup '네임 스페이스'스키마 '에 유효하지 않은 하위 요소가 있습니다.이VS2013의 네임 스페이스에있는 MSBuild 요소 'ItemGroup'이 생성되었습니다. * .vcxproj 파일

"간단한"예제를 만들기 위해 VS2013을 사용하여 "더미" "MFCLibrary1 vxcproj 파일을 편집하여 유효한 프로젝트에서이 문제가 발생하는지 확인하고, Readme.txt가 Include 항목 인 ItemGroup에서 잘못된 하위 요소를 찾습니다 (스크린 샷에 있지만 가능하지 않음). 나는이 코드 블록을 굵은 글씨로 강조했다. 이것은 다른 프로젝트를 볼 때 얻는 오류와 유사하다. 또는 유효한 프로젝트 인 것 같은 것을 추가한다. 내가 위반하고 있는지를 판단하는 것은 어렵다. 스키마를 아직 배우고있는 스키마.

Screenshot of error

VS2013에서 생성 된 코드는 다음과 같습니다. 이 프로젝트 마법사를 사용하여 생성 된 다음 방금 내가보기에는 문제의 예로 파일로 열립니다. 이 유효한 프로젝트 파일이 Intellisense 경고를 던지고 있습니다.
내가 원하는 것은 적절한 스키마를 Intellisense에 알리는 방법을 찾아서 작업중인 프로젝트를 사용자 정의하기 위해 간단한 수정을 수행 할 때 오류 검사를받을 수있게하는 것입니다. 초보자로서 나는 시스템을 갖춰서 사용자 정의를 올바르게 수행하는 방법을 배울 수있는 모든 도구/지원을 원합니다. Intellisense를 무시하여 시작한다는 것은 다른 편집기를 사용할 수도 있음을 의미합니다.

이 솔루션은 모든 스키마를 강제로 제공 할 수있는 XML 편집기를 사용하는 것으로 보입니다. 난 그냥 올라간 게 아니야? xsd? 아래에 projecct에 토큰을 추가 할 수있는 방법이 있는지 알기에 충분히 VS2013을 사용하여 Intellisense 지원으로 파일을 지능적으로 편집 할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup Label="ProjectConfigurations"> 
    <ProjectConfiguration Include="Debug|Win32"> 
     <Configuration>Debug</Configuration> 
     <Platform>Win32</Platform> 
    </ProjectConfiguration> 
    <ProjectConfiguration Include="Release|Win32"> 
     <Configuration>Release</Configuration> 
     <Platform>Win32</Platform> 
    </ProjectConfiguration> 
    </ItemGroup> 
    <PropertyGroup Label="Globals"> 
    <ProjectGuid>{F68857AB-780A-4373-BDD7-2CFCFE30270E}</ProjectGuid> 
    <RootNamespace>MFCLibrary1</RootNamespace> 
    <Keyword>MFCDLLProj</Keyword> 
    </PropertyGroup> 
    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> 
    <ConfigurationType>DynamicLibrary</ConfigurationType> 
    <UseDebugLibraries>true</UseDebugLibraries> 
    <PlatformToolset>v120</PlatformToolset> 
    <CharacterSet>Unicode</CharacterSet> 
    <UseOfMfc>Dynamic</UseOfMfc> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> 
    <ConfigurationType>DynamicLibrary</ConfigurationType> 
    <UseDebugLibraries>false</UseDebugLibraries> 
    <PlatformToolset>v120</PlatformToolset> 
    <WholeProgramOptimization>true</WholeProgramOptimization> 
    <CharacterSet>Unicode</CharacterSet> 
    <UseOfMfc>Dynamic</UseOfMfc> 
    </PropertyGroup> 
    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
    <ImportGroup Label="ExtensionSettings"> 
    </ImportGroup> 
    <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 
    </ImportGroup> 
    <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 
    </ImportGroup> 
    <PropertyGroup Label="UserMacros" /> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 
    <LinkIncremental>true</LinkIncremental> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 
    <LinkIncremental>false</LinkIncremental> 
    </PropertyGroup> 
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 
    <ClCompile> 
     <PrecompiledHeader>Use</PrecompiledHeader> 
     <WarningLevel>Level3</WarningLevel> 
     <Optimization>Disabled</Optimization> 
     <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    </ClCompile> 
    <Link> 
     <SubSystem>Windows</SubSystem> 
     <GenerateDebugInformation>true</GenerateDebugInformation> 
     <ModuleDefinitionFile>.\MFCLibrary1.def</ModuleDefinitionFile> 
    </Link> 
    <Midl> 
     <MkTypLibCompatible>false</MkTypLibCompatible> 
     <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    </Midl> 
    <ResourceCompile> 
     <Culture>0x0409</Culture> 
     <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
     <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 
    </ResourceCompile> 
    </ItemDefinitionGroup> 
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 
    <ClCompile> 
     <WarningLevel>Level3</WarningLevel> 
     <PrecompiledHeader>Use</PrecompiledHeader> 
     <Optimization>MaxSpeed</Optimization> 
     <FunctionLevelLinking>true</FunctionLevelLinking> 
     <IntrinsicFunctions>true</IntrinsicFunctions> 
     <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    </ClCompile> 
    <Link> 
     <SubSystem>Windows</SubSystem> 
     <GenerateDebugInformation>true</GenerateDebugInformation> 
     <EnableCOMDATFolding>true</EnableCOMDATFolding> 
     <OptimizeReferences>true</OptimizeReferences> 
     <ModuleDefinitionFile>.\MFCLibrary1.def</ModuleDefinitionFile> 
    </Link> 
    <Midl> 
     <MkTypLibCompatible>false</MkTypLibCompatible> 
     <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    </Midl> 
    <ResourceCompile> 
     <Culture>0x0409</Culture> 
     <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
     <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 
    </ResourceCompile> 
    </ItemDefinitionGroup> 
    **<ItemGroup> 
    <Text Include="ReadMe.txt" /> 
    </ItemGroup>** 
    <ItemGroup> 
    <ClCompile Include="MFCLibrary1.cpp" /> 
    <ClCompile Include="stdafx.cpp"> 
     <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> 
     <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> 
    </ClCompile> 
    </ItemGroup> 
    <ItemGroup> 
    <ClInclude Include="MFCLibrary1.h" /> 
    <ClInclude Include="Resource.h" /> 
    <ClInclude Include="stdafx.h" /> 
    <ClInclude Include="targetver.h" /> 
    </ItemGroup> 
    <ItemGroup> 
    <None Include="MFCLibrary1.def" /> 
    <None Include="res\MFCLibrary1.rc2" /> 
    </ItemGroup> 
    <ItemGroup> 
    <ResourceCompile Include="MFCLibrary1.rc" /> 
    </ItemGroup> 
    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> 
    <ImportGroup Label="ExtensionTargets"> 
    </ImportGroup> 
</Project> 

답변

0

그림

것입니다 적절한 스키마의 인텔리을 알리는 방법은, 때문에 마음대로 추가 할 수있는 사용자 지정 작업, 속성 및 항목의 더 '적절한'스키마가 없다. 따라서 초보자 라 할지라도이를 처리하는 한 가지 방법은 많은 사람들이하는 일입니다. 모든 경고를 무시하고 후자는 실제로 프로젝트에로드가 실패하게하고 전자는 일반적으로 오류를 일으키기 때문에 오류 만 살펴보십시오. 말했다되고 그건

, msbuild를 XML 파일의 검증에 사용되는 XSD 파일은

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas\1033\

아래에 있고 파일

MSBuild\Microsoft.Build.Commontypes.xsdMsBuild\Microsoft.Build.Core.xsdMicrosoft.Build.xsd

당신이 경우 입니다 정말로이 일에 시간을 보내고 싶지 않아 광포 해져서보고 싶지 않은 모든 속성의 이름을 추가하십시오. 마지막 파일에 대한 경고, 심지어는 몇 가지 예제와 함께

<!-- ========= ADD CUSTOM ITEMS, PROPERTIES, AND TASKS BELOW ======= -->

을 언급하고있다. 더 많은 예제를 보려면 Commontypes.xsd의 995 행으로 스크롤하여 알려진 등록 정보를 나열하십시오. 추가 한 항목은 더 이상 경고를받지 않습니다.xsd 파일에 대한 경험이 없으므로 대신 일종의 와일드 카드를 사용할 수도 있습니다. 하지만 어쨌든 VS 설치를 망설이고 다른 PC를 사용하면 이러한 수정 작업을 수행하지 않을 수도 있습니다.

관련 문제