精华内容
下载资源
问答
  • 使用项目属性

    千次阅读 2014-11-21 09:37:58
    使用项目属性 Visual Studio 2012 - Visual C++ 使用项目属性 在 IDE 中,所有编译器选项、链接器选项、调试器设置和自定义生成步骤都显示为“属性”。 可以使用项目的属性页查看和修改项目的...
    
    
    
    
    Visual Studio 2012 - Visual C++
    使用项目属性

    在 IDE 中,所有编译器选项、链接器选项、调试器设置和自定义生成步骤都显示为“属性”。 可以使用项目的属性页查看和修改项目的属性。 你可以将项目属性独立应用于生成配置(调试或发布)和目标平台(Win32、x64 或 ARM)的任意组合。 你还可以为项目中的各文件设置属性。

    虽然可以根据每个用户和每台计算机设置“全局”属性,但我们不建议这样做。 相反,建议你使用“属性管理器”创建属性表来存储你希望能够重新使用或与其他人共享的每一类项目的设置。 属性表还使无意中更改其他项目类型的属性设置的可能性变小。 本文随后将详细讨论属性表。

    若要显示“属性管理器”,请在菜单栏上依次选择“视图”“其他窗口”“属性管理器”

    Visual C++ 项目系统基于 MSBuild。 虽然可以直接在命令行上编辑 XML 项目文件和属性表,我们仍建议你使用 IDE,在你修改参与继承的属性时,这一点尤为重要。 Visual C++ 项目系统不一定可以识别在 MSBuild 中有效的手动编辑文件,在生成过程中可能产生细微错误。

    项目文件是文件扩展名为 .vcxproj 的 XML 文件。 所有在 IDE 中设置的属性直接写入项目文件或生成时导入的属性表中。

    下图显示了 Visual C++ 项目的属性页。 请注意,在左窗格中,选中“VC++ 目录”规则,右窗格中将显示与规则关联的属性。($(...) 值是宏,将在本文后面部分进行讨论。)VC++ 目录是配置属性,对应不同配置,其值可以不同,例如 Debug 对应 Release。 你可以使用对话框顶部的“配置”“平台”列表框设置适用于属性的配置;在许多情况下,“所有平台”“所有配置”就是合适的选择。 “通用属性”规则中的设置适用于所有配置。

    项目属性页

    设置项目属性

    总而言之,此处介绍了如何设置项目的属性:

    设置项目属性

    1. 在菜单栏上,依次选择“项目”“属性”。 或者在“解决方案资源管理器”“属性管理器”中,打开项目的快捷菜单,然后选择“属性”。 此时将打开“属性页”对话框。

    2. 在对话框顶部的框中,选择要应用设置的配置和平台。

      若要创建或修改出现在“配置”框中的配置,请选择“配置管理器”按钮。

    3. 设置属性值。 选择“确定”按钮后,新值就会写入项目文件。

    说明说明

    “属性页”对话框仅显示适用于当前项目的属性页。 例如,如果该项目没有 .idl 文件则不会显示 MIDL 属性页。

    有关“属性页”对话框中属性的详细信息,请参阅:

    提示提示

    你可以在“快速启动”窗口中键入属性页的名称,直接打开该属性页。

    硬编码属性与宏

    某些项目属性可当做一个值处理,可被引用为其他位置定义的属性。 这种值称为“宏”,用于将自己与其他种类的项目属性设置区分开来。 宏可以指由 MSBuild 系统定义或你自己定义的属性。 通过使用宏(而不是硬编码值,例如目录路径),你可更轻松地在计算机之间以及 Visual Studio 的版本之间共享属性设置,并且可更好地确保项目设置正确地参与属性继承。

    全局宏

    应用于项目配置的所有项目。 具有语法 $(name)。 全局宏的示例是 $(VCInstallDir),它存储 Visual Studio 安装的根目录。 全局宏与 MSBuild 中的 PropertyGroup 相对应。

    项宏

    具有语法 %(name)。 对于文件来说,仅适用于该文件的项宏,例如可以使用 %(AdditionalIncludeDirectories) 来指定仅适用于特定文件的包含目录。 这种项宏与 MSBuild 中的 ItemGroup 元数据相对应。 在项目配置中使用时,项宏适用于特定类型的所有文件。 例如,C/C++“预处理器定义”配置属性可以获取适用于项目中所有 .cpp 文件的 %(PreprocessorDefinitions) 项宏。 这种项宏与 MSBuild 中的 ItemDefinitionGroup 元数据相对应。 有关详细信息,请参阅 项定义

    你可以使用宏定义属性值,也可以使用属性编辑器查看可用宏的值。

    属性编辑器

    你可以使用属性编辑器来修改特定字符串属性,选择宏作为值。 若要访问“属性编辑器”,在属性页中选择属性,然后选择右侧的向下箭头按钮。 如果下拉列表包含 <“编辑”>,那么你可以选择它来显示该属性的属性编辑器。

    属性_编辑器_下拉列表

    在属性编辑器中,你可以选择“宏”按钮查看可用宏及这些宏的当前值。 下图显示选中“宏”按钮后,“附加包含目录”属性的属性编辑器。 如果选中“从父级或项目默认设置继承”复选框并添加了新值,则该值会附加到当前被继承的任意值。 如果清除复选框,则新值会替换继承值。 在大多数情况下,选中复选框。

    属性编辑器,Visual C++

    共享可重用的属性配置

    如果你想将经常使用的属性集应用于多个项目,则可以使用“属性管理器”在可重用的属性表文件中捕获,按照惯例,文件的扩展名为 .props。 你可以将一张或多张表应用于新项目,这样就不必从零开始设置属性。 若要访问“属性管理器”,在菜单栏中选择“视图”“属性管理器”

    如果选择“添加新项目属性表”,然后进行选择(例如 MyProps.props 属性表),将显示属性页对话框。 请注意,适用于 MyProps 属性表;你所做的任何更改都将写入表中,而非属性文件 (.vcxproj) 中。

    如果直接在 .vcxproj 文件中设置同一属性,属性表中的属性将被重写。

    你可以按所需的频率导入属性表。 一个解决方案中的多个项目可从同一个属性表继承设置,一个项目可有多个表。 属性表自身可以从另一个属性表继承设置。

    重要说明重要事项

    由于 .props 文件不作为项目项创建,因此该文件默认不参与源代码管理。 如果你希望将文件加入源代码管理,则可以手动添加文件作为解决方案项。

    创建属性表

    1. 在菜单栏上,依次选择“查看”“属性管理器”。 此时将打开“属性管理器”

    2. 若要定义属性表的范围,请选择属性表适用的项。 这可能是一个特殊配置,或另一个属性表。 打开该项的快捷菜单,然后选择“添加新项目属性表”。 指定一个名称和位置。

    3. “属性管理器”中,打开新的属性表然后设置要包括的属性。

    属性继承

    项目属性已分层。 每层继承前一层的值,但是继承的值可以通过设置属性显式重写。 这是基本的继承树:

    1. 来自 MSBuild CPP 工具集的默认设置(..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props,由 .vcxproj 文件导入。)

    2. 属性表

    3. .vcxproj 文件。(可能重写默认设置和属性页设置。)

    4. 项元数据

    提示提示

    在属性页中,bold 的属性在当前上下文中定义。 普通字体的属性将被继承。

    项目文件 (.vcxproj) 在生成时导入其他属性表。 在导入所有属性表后,对项目文件进行计算,然后所有属性值都使用最后一个定义。 有时,通过查看展开的文件来确定给定的属性值如何继承非常有用。 若要查看扩展版本,请在 Visual Studio 命令提示中输入以下命令。(将占位符文件名称更改为要使用的名称。)

    msbuild /pp:temp.txt myapp.vcxproj

    除非你十分熟悉 MSBuild,否则展开的项目文件可能会很大并且难以理解。 这是项目文件的基本结构:

    1. 基本项目属性,不在 IDE 中显示。

    2. 导入 Microsoft.cpp.default.props,该文件定义了一些基本的、不依赖于工具集的属性。

    3. 全局配置属性在“常规配置”页面上显示为“PlatformToolset”“项目”默认属性。 这些属性决定下一步将哪个工具集和内部属性表导入 Microsoft.cpp.props 中。

    4. 导入 Microsoft.cpp.props,该文件设置大多数项目默认值。

    5. 导入所有属性表,包括 .user 文件。 这些属性表可以重写内容,但“PlatformToolset”“项目”默认属性除外。

    6. 项目配置属性的其余部分。 这些值可以重写属性表中设置的内容。

    7. 项(文件)及其元数据。 这些始终是 MSBuild 评估规则的最后一项,即使它们出现在其他属性和导入之前仍是如此。

    有关详细信息,请参阅 MSBuild 属性

    .user 文件以及存在问题的原因

    过去的 Visual Studio 版本使用了全局属性表,此表包含 .user 文件名扩展,并且位于 <userprofile>\AppData\Local\Microsoft\MSBuild\v4.0\ folder。 我们不再推荐这些文件,因为它们是针对每个用户、每台计算机来设置项目配置属性的。 特别是如果你在生成计算机上面向多个平台,此类“全局”设置会影响生成。 例如,如果你同时拥有一个 MFC 项目和 Windows Phone 项目,则其中一个项目的 .user 属性将会无效。 可重用的属性表更为灵活,而且更加可靠。

    尽管 Visual Studio 仍安装 .user 文件并参与属性继承,但默认情况下,这些文件为空。 最佳做法是删除项目在“属性管理器”中的引用,以确保项目按每个计算机设置和每个用户独立运行。这对确保在 SCC(源代码管理)环境中的正确行为来说非常重要。

    添加包含目录到默认目录集

    在将包含目录添加到项目中时,请勿重写所有默认目录,这点非常重要。 添加目录的正确方法是追加新路径,例如“C:\MyNewIncludeDir\”,然后追加“$(IncludePath)”宏为属性值。

    创建用户定义的宏

    你可以创建用户定义的宏,以便在项目生成中将宏用作变量。 例如,可以创建一个用户定义的宏来提供自定义生成步骤或自定义生成工具的值。 用户定义的宏是名称/值对。 在项目文件中,使用 $(name) 表示法访问该值。

    用户定义的宏存储在属性表中。 如果你的项目尚未包含属性表,请按照中的步骤创建一个属性表

    创建用户定义的宏

    1. “属性管理器”窗口中(在菜单栏上,依次选择“视图”“属性管理器”),打开属性表的快捷菜单(名称以 .user 结尾),然后选择“属性”。 此时将打开该属性表的“属性页”对话框。

    2. 在对话框的左窗格中,选择“用户宏”。 在右窗格中,选择“添加宏”按钮,打开“添加用户宏”对话框。

    3. 在对话框中,指定宏的名称和值。 (可选)选中“将此宏设置为生成环境中的环境变量”复选框。

    设置生成的环境变量

    Visual C++ 编译器 (cl.exe) 可识别某些环境变量,尤其是 LIB、LIBPATH、PATH 和 INCLUDE。 使用 IDE 生成时, “VC++ 目录”属性页属性页中设置的属性用于设置那些环境变量。 如果已设置了 LIB、LIBPATH 和 INCLUDE 值(例如通过开发人员命令提示设置),则这些值将被相应的 MSBuild 属性的值替换。 然后生成在 PATH 前预置 VC++ 目录可执行目录属性的值。 你可以通过创建用户定义的宏然后选中显示“在生成环境中将此宏设置为环境变量”的框来设置用户定义的环境变量。

    设置调试会话的环境变量

    在项目“属性页”对话框的左窗格中,展开“配置属性”,然后选择“调试”

    在右窗格中,修改“环境”“合并环境”项目设置,然后选择“确定”按钮。

    查看所有宏及其值

    在项目的“属性页”对话框中,选择字符串属性(例如“VC++ 目录”),在右列中选择下箭头按钮,然后选择“<编辑>”,打开属性编辑器。 在属性编辑器中,选择“宏”按钮。

    同时设置多个配置的属性

    若要为所有配置设置属性,请在项目“属性页”对话框顶部的框中,选择“所有配置”“所有平台”,然后设置所需的属性。

    若要只为某些配置设置属性,请在“属性管理器”中选择多个配置,然后打开快捷菜单并选择“属性”。 你更改的任何设置将应用于所选的每个配置。

    你还可以为多个配置创建一个属性表。 为此,请为每个配置创建属性表,打开其中一个配置的快捷菜单,选择“添加现有属性表”,然后添加其他表。 但是,如果使用一个常用属性表,请注意在设置属性时,它会获取该表适用的所有配置设置,而且 IDE 不会显示从给定属性表继承的项目或其他属性表。

    在具有多个项目的大型解决方案中,创建解决方案级别的属性表非常有用。 在将项目添加到解决方案时,请使用“属性管理器”将该属性表添加到项目中。 如果项目级别为必填字段,则可以添加一个新属性表以设置指定的项目值。

    快速浏览和搜索所有选项

    “所有选项”属性页(在“属性页”对话框左窗格中“C/C++”节点下)可实现快速浏览和搜索当前上下文中可用的属性。 它具有特殊的搜索框和简单的语法,能够帮助你筛选结果:

    无前缀:

    仅在属性名称中搜索(不区分大小写的子字符串)。

    '/' 或 '-':

    仅在编译器开关中搜索(不区分大小写的前缀)

    v:

    仅在值中搜索(不区分大小写的子字符串)。

    展开全文
  • 细说css3 flex布局之flex项目属性

    千次阅读 2015-07-25 22:26:22
    在前篇博文中已经详细叙述了flex布局中的容器属性,那么现在就来谈谈flex项目属性那些事······ 以下6个属性是作用在flex项目上的: order flex-grow flex-shrink flex-basis flex align-self 1.1 order属性 ...

    在前篇博文中已经详细叙述了flex布局中的容器属性,那么现在就来谈谈flex项目属性那些事······
    以下6个属性是作用在flex项目上的:

    • order
    • flex-grow
    • flex-shrink
    • flex-basis
    • flex
    • align-self

    1.1 order属性
    该属性定义项目的排列顺序,数值越小,排列越靠前,默认值为0。用法及效果如下:
    html代码

    <div class="flex-box">
        <div class="flex-item">item1</div>
        <div class="flex-item">item2</div>
        <div class="flex-item">item3</div>
    </div>

    css代码

    .flex-box{
            background:orange;
            display: flex;     /*定义为flex布局*/
        }
    .flex-item{
        margin:10px;
        height:100px;
        width:100px;
        background: purple;
        color:#fff;
    }
    div:first-child{
        order:0;   /*item1的序号为0*/
    }
    div:nth-child(2){
        order:-1;
    }
    div:last-child{
        order:2;
    }

    效果图:
    这里写图片描述
    注意,在本例中没有设置flex-direction的属性,那么其值默认是row,你也可以尝试将其设置成column,那么flex项目则会根据order纵向排列。

    1.2 flex-grow属性
    该属性定义项目的放大比例,默认为0,即不作任何的放大。flex容器下的项目是根据这个值的比例对容器的剩余空间进行瓜分的。用法及效果如下:

    .item-class{
        flex-grow:1;
    }

    效果图:
    这里写图片描述
    说明:在使用这个属性的时候,一般也最好不要对flex项目设置宽度/高度,否则会影响flex容器的比例分配。

    1.3 flex-shrink属性
    该属性定义了项目的缩小比例,默认为1,即项目缩小。用法及效果如下:

    .item-class{
        flex-shrink:0;
    }

    效果图:
    这里写图片描述
    说明:这里flex容器的宽度设置成600px,flex项目的宽度均为300px,margin:10px;在为item1分配完空间后,剩下的空间被后面两个项目按比例缩小分配。

    1.4 flex-basis属性
    该属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴(main asix)是否有多余空间。她的默认值为auto,即项目 原本大小。它换可以设置为跟width属性一样的值(100px),即项目占据固定空间(容器宽度不够自动被压缩)。用法及效果如下:

    .item-class{
        flex-basis:100px | auto;
    }

    效果图:
    这里写图片描述
    说明:该属性的用法就像是使用width(flex-direction:row; 的时候)或heigh(direction为column的时候)属性那样,在容器宽度不够的时候,它会按照flex-shrink属性的默认值压缩项目。

    1.5 flex属性
    该属性是前三个属性:flex-grow、flex-shrink、flex-basis的简写形式。默认值为0 1 auto,即不放大,自动缩小,后面两个属性值是可选项。该属性有两个快捷键值:auto(0 1 auto),none(0 0 auto)。建议优先使用这个属性,而不是单独写三个分离的属性。

    1.6 align-self属性
    该属性允许单个项目有与其他项目不一样的对齐方式。可覆盖作用在flex容器上的align-items属性。默认值为auto,表示继承父元素align-items属性,如果没有父元素,则等同stretch。value的取值包括:auto、flex-start、flex-end、end、baseline、stretch。该属性额取值除了auto致亲爱,这个属性作用在项目上的效果跟align-items作用在项目父元素(flex容器)上的效果是一样的,唯一不同的是:align-self仅对使用该属性的项目其效果,align-items是对所有的项目其效果。至于各种属性值所起的效果,大家可以参考前篇博文《细说css3 flex布局值flex容器属性》。

    至此,关于css3的flex布局就介绍完了,尝试运用下吧,真的很强大!

    展开全文
  • VS项目属性的一些配置项的总结(important)

    万次阅读 多人点赞 2014-02-16 03:53:08
    以下内容为“原创”+“转载” 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意...

    以下内容为“原创”+“转载”

    首先,解决方案和项目文件夹包含关系(c++项目):

    VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy文件夹,ssyy文件夹代表整个ssyy项目的所有内容都在这个文件夹内,这个文件夹内含有ssyy.vcproj的项目配置文件和.h头文件以及.cpp源文件。如果在fangan解决方案下再建立一个新项目名为ssyy2,则会在fangan文件夹下生成一个ssyy2文件夹存放ssyy2项目的所有内容。

    由上面叙述可以总结出,管理器(解决方案或项目)都会对应一个总的文件夹,这个管理器文件夹下存放本管理器的配置文件以及子管理器。比如,解决方案是个管理器,它的文件夹下含有.sln配置文件以及子管理器ssyy项目和子管理器ssyy2项目。

    另外,默认情况下,项目属性设置的目录起点为项目配置文件所在位置,实际上就是项目头文件和源文件所在位置。

    补充:vs中建立默认的C#项目和建立默认的C++项目生成的目录结构是不一样的。如果是C#项目,则解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹(共两个东东),而项目总文件夹下包含c#源文件、项目配置文件proj、一个Properties属性文件夹、一个obj文件夹和一个bin文件夹,其中obj和bin文件夹下都包含debug和release两个文件夹。obj文件夹下存放中间编译结果(扩展名更加项目类型而不同),而bin文件夹下存放最终生成的结果(扩展名一般为exe或dll)。

    而如果是C++项目,则解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹和一个Debug文件夹以及一个Release文件夹(共四个东东,其中Debug和Release文件夹中存放最终生成的结果exe或dll,要注意如果不使用Release生成,则不存在Release文件夹),而项目总文件夹下包含C++源文件头文件、项目配置文件和一个Debug文件夹以及一个Release文件夹(一定要注意,此处的Debug和Release文件夹仅仅存放中间编译结果obj,不存放exe和dll之类的东西。如果不使用Release编译,则没有对应的Release文件夹)。

    由此可见,c#项目默认生成的文件目录结构更合理,且输出的exe位于总项目文件夹内,而c++项目默认exe位于解决方案总文件夹下。另外c#更合理在,C#使用Bin目录,在Bin目录下包含debug和release两个目录,而C++不使用Bin目录,直接使用debug和releae两个目录。

     

    其次,常用项目属性和系统配置变量关系:

             如果我们建立一个默认的vc项目ssyy,他的默认“常规“栏目中,“输出目录”为$(SolutionDir)$(ConfigurationName),所以调试时会在解决方案文件夹下建立一个debug(ConfigurationName的值为debug)文件夹,并在此文件夹下生成 ssyy.lik链接器 和ssyy.exe文件 。默认“中间目录”为$(ConfigurationName),所以会在ssyy项目文件夹下(即ssyy.vcproj的项目配置文件所在位置)建立一个debug文件夹,并在该文件夹下生成ssyy.obj二进制文件。默认“链接器”栏目下的“常规”选项下的“输出文件”选项为$(OutDir)\$(ProjectName).exe,其中$(OutDir)就已经在“常规”栏目的“输出目录”选项赋值了。【所以$(OutDir)的值是在“输出目录”属性中定义的】。

            另外,经过实际测试,发现“输出目录”属性只能起到对$(OutDir)系统变量赋值的作用,和“改变生成的.exe文件存放位置”没任何关系。也就是说,如果“输出目录”中设置的$(OutDir)值在C盘,而“输出文件”中设置输出文件的位置为D盘,最终生成的exe文件会在D盘,“输出文件”属性才决定输出exe文件的位置。

            而$(TargetDir)的值是在生成exe文件后自动赋予值为exe文件所在位置。所以可以说,“输出文件”最终决定exe文件所在的位置,也最终决定了$(TargetDir)的值,$(TargetPath)和$(TargetDir)的行为是类似的,此不赘述。

            上面两段说了这么多,总结就是,默认情况下“输出目录”和“输出文件”两个属性对应的目录是一样的,这样用着方便(当然,输出文件的值在输出目录的值的基础上还包含有exe文件名)。如果两个不一样,则中间生成的链接器用的如xx.ilk和xx.pdb文件等在输出目录,而最终生成的xx.exe文件在“输出文件”属性设置的目录中。

    另外,上面两段话可以总结出,当调试程序时,系统变量$(OutDir)的值是最先确定的,而$(TargetDir)和$(TargetPath)的值是在exe文件生成后才确定的。也就是说系统变量$(OutDir)的值由VS项目的“输出目录”属性决定,而$(TargetDir)和$(TargetPath)的值由VS项目的“输出文件”属性决定。即设置了VS的“输出目录”属性就相当于设置了$(OutDir)的值,“输出目录”是界面上的提示用于接收用户输入的配置信息,然后把这个具体的配置信息存入系统内容的变量$(OutDir)中。

    其它常用的属性还有,“调试”栏目中的“工作目录”项,这个属性默认情况下是空的,但表示工作目录是工程目录,也就是工程配置文件ssyy.vcproj所在目录。工作目录表示进行某项操作的目的目录,会随着OpenFileDialogSaveFileDialog等对象所确定的目录而改变。“工作目录”属性作用是程序运行后唯一识别的默认目录,即工作后只认识这个目录,工作目录这个名字描述的就很形象,(可以将所依赖的libdll库文件所在目录设为工作目录,但一般是把lib放在解决方案下的Lib目录中,把dll放在解决方案下的Bin目录中),例如程序运行过程中生成一个txt文本文件,如果在创建文件过程中未指定绝对路径,只指定创建文件的文件名,那么这个文本文件默认就会建立在工作目录中,当然读取一些配置文件也在工作目录中查找,但要说明一下,生成的exe文件跟工作目录没任何关系,也不会放在工作目录中。总的来说,工作目录就是程序运行过程中默认读取的目录。对于dll,如果是程序运行前就进入内存有点像静态链接那样,此时dll就可以放入exe所在的执行目录,如果dll是运行中动态加载的一般放在工作目录,比如插件就放在工作目录。即工作目录就是运行期间唯一能识别的默认目录,工作目录在代码中用GetCurrentDirectory之类的函数获取,具体代码间最下面的附1。工作目录与执行目录可以不同,例如一个人住在北京,但他的工作地点不一定在北京,可能在天津。

    对工作目录的补充:vs中工作目录的设置是给调试用的,也即你启动调试后,启动一个新进程,自动把这个新进程的工作目录设置为vs项目属性中的工作目录,然后新进程启动对应的exe程序。但是如果不使用vs的调试启动exe,而是直接双击exe文件启动一个新进程时,会自动把这个新进程的工作目录设置为exe文件所在的目录,这是和vs启动调试不同的地方。所以如果发布的时候不把工作目录内的东西拷到exe所在的目录内,就会运行出错,因为此时工作目录不再是vs中设置的了,而是exe文件所在的目录。最后,说一下,vs中默认的vc++工程的工作目录项目的值是空的,代表默认是vs工程所在目录即.vcproj文件所在目录,c#工程默认没测试,估计和vc的一样。】

    【同样在调试选项下的和工作目录选项同一级的选项“命令”选项是设置,使用调试时,从哪里启动exe文件,因为一般生成的exe放在bin目录下的debug或release目录下,所以命令选项一般为“Bin\$(Configuration)\$(ProjectName).exe”,默认也是这个值,当然可以更改,但此时意味着调试状态下启动的exe为“命令”选项中设置的exe文件,而不是默认的bin目录下的debug或release下的exe文件了。最后说一下,上面所说的“调试”是指vs下启动exe,包括debug模式和release模式,不要把调试就理解为只有debug模式。】

     

     “调试”栏目中的“命令(Command)”属性项,【这个属性表示调试器要启动的exe文件的全名】,包括路径名,默认为$(TargetPath),而TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值。当然你也可以人为的更改“命令”属性的值,比如更改为c:\aa.exe,而“输出文件”的值为c:\bb.exe,此时如果输出文件所在目录没有aa.exe的话(因链接器只生成bb.exe而根本不会生成aa.exe),调试器就不能启动aa.exe,提示找不到aa.exe。当然如果目录中已经有aa.exe文件(可以强制赋值一个bb.exe文件的副本并命名为aa.exe),此时调试器就可以正常调试通过。

    “链接器”栏目下的“输入”选项下的“附加依赖项”项。此项是设置程序链接时使用的静态库。相当于链接已经编译好了的“代码”。由此我们可以简单的认为这些库就相当于我们自己写的.cpp文件,只不过这些库是编译好了的.cpp而已(这里只需要库名称即可,搜索路径在其他地方设置)。

    “附加依赖性的设置”等同于在代码中写“#pragma comment(lib, "库名称.lib") ”语句,如果使用相对路径则如下:

    #pragma comment(lib,"..\\debug\\TestLib.lib");其中的反斜杠要用双反斜杠,因为它是程序解释的双引号包括的字符串,需要转义一下,要区别include,#include "..\TestVideoApplication.h"中并不是由程序解释的字符串,所以不用转义

     

    下面举一个多项目例子(vc++例子):(转自:http://blog.163.com/zhang_bo1983/blog/static/16992223020123753334981/

    解决方案与项目:
    从VC6之后VC系列就使用解决方案(Solution)来替代原来的工作空间,用于组织和管理多个相关的项目(Project)。
    文章首先演示一个虚拟的解决方案和我们期望得到的目录结构,然后使用VC2008的项目设置功能来一步一步达到我们的需求。
    虚拟解决方案:
    该虚拟解决方案名为GMA,包含一个动态链接库项目ChocolateMilk和一个应用程序项目PureMilk,需要使用一个第三方库log4cxx(Apache log4j的C++移植版本,用于日志输出)。【注意这个例子中ChocolateMilk项目只生成一个dll,PureMilk只生成一个exe】
    log4cxx是以动态库的方式编译的,所以我们需要它的3样东西,分别是头文件,导入库(log4cxx.lib, log4cxxd.lib)和动态链接库(log4cxx.dll)。
    假设我们期望的目录结构如下图:

    1. GMA是解决方案目录
    2. PureMilk和ChocolateMilk是项目目录
    3. Lib目录用于存放导入库或者静态库(包括第三方库和自己的项目)
    4. Include用于存放三方库的头文件(可以看出第三方库所有内容分布在Lib、Include和Bin中)
    5. Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本。另外,程序运行过程中需要外部的数据文件和启动时需要的配置文件等等都可放于该目录
    6. Temp用于存放临时生成文件,其中Compile存放编译器编译时生成的obj文件,Link存放链接器的输出文件。

    7.PureMilk和ChocoliteMilk两个项目的头文件和源文件位置不要动,任然在各自的项目文件夹内。
    上面目录结构清晰,一面了然,当我们的程序需要制作安装包或者要打包源码
    发布的时候,它能够使得我们生活变得更容易^_^
    制作安装包时我们只需将“/GMA/Bin/Release/”目录下的所有文件打包。
    发布和转移源码的时候我们可以打包除了Temp目录以外“/GMA/”下面的所有文件和目录(如果不需要执行档,也可不包括Bin)。

    我们的需求是明确的,可是VC 2008(VS2008)并不会自动为我们做好上面所有的事情。不过我们并不需要编写复杂的编译脚本(makefile),只需要简单的修改项目的缺省设置即可。
    我们需要VC(VS)为我们做的事情包括:
    1.使用“/GMA/Temp/Compile/”作为项目编译时使用的中间目录
    2.使用“/GMA/Temp/Link/”作为项目链接的输出目录
    3.当项目是应用程序时,在构建结束后拷贝执行文件到“/GMA/Bin/Release/”或“/GMA/Bin/Debug/”,当项目是动态链接库时,除了拷贝dll到Bin,还拷贝导入库到“/GMA/Lib/”
    4.当项目是应用程序时,调试时运行“/GMA/Bin/Debug/”或“/GMA/Bin/Release/”下面的执行文件,并以“/GMA/Bin/Debug/”或“/GMA/Bin/Release/”为工作目录
    首先看一下项目设置中可以使用的宏,常用的有:


    ConfigurationName

    配置名字,通常是Debug或者Release

    IntDir

    编译器使用的中间目录,产出obj文件

    OutDir

    链接器使用的输出目录

    ProjectDir

    项目目录

    ProjectName

    项目名字

    SolutionDir

    解决方案目录

    TargetDir

    目标输出文件所在的目录

    TargetExt

    目标输出的扩展名

    TargetFileName

    目标输出文件名,包括扩展名

    TargetName

    目标输出名,不包括扩展名

    TargetPath

    目标输出文件的全路径名

    下图是某一个工程所有设置的例子:


    注意:从上图可以看出,TargetDir指目标目录,是一个目录。而TargetPath是目标路径,包括具体的文件名

     

    下面开始进行所举例子的工程设置:

    首先来设置ChocolateMilk:
    1.使用“/GMA/Temp/Compile/”作为项目编译时使用的中间目录
    2.使用“/GMA/Temp/Link/”作为项目链接的输出目录

    注意高亮的部分,首先将配置改成All Configuration(全部配置),这样可以让我们同时修改Debug和Release的部分;
    Output Directory(输出目录,链接器)栏位填入:
    $(SolutionDir)\Temp\Link\$(ProjectName)\$(ConfigurationName)
    Intermediate Directory(中间目录,编译器)栏位填入:
    $(SolutionDir)\Temp\Compile\$(ProjectName)\$(ConfigurationName)
    3.构建结束后拷贝动态链接库到“/GMA/Bin/Release/”或“/GMA/Bin/Debug/”,拷贝导入库到“/GMA/Lib/”【这是因为若不设置,此时生成的dll和lib都在上面设置的输出目录中】
    我们通常都会在Debug版本的输出库后面加上字母“d”以表示这是Debug版本,在Debug配置下,修改Import Library栏位:

    VC可以让我们设置构建前后执行的脚本程序,所以为了完成3,
    我们需要写构建后执行的脚本:

    在Command Line中填入,Debug配置下:
    copy $(TargetPath)    $(SolutionDir)\Bin\$(ConfigurationName)\;
    copy $(TargetDir)$(TargetName)d.lib    $(SolutionDir)\Lib\;
    Release配置下:
    copy $(TargetPath)    $(SolutionDir)\Bin\$(ConfigurationName)\;
    copy $(TargetDir)$(TargetName).lib    $(SolutionDir)\Lib\;
    之所以要分别设置是因为VC没有表示导入库的宏名字 -_-P
    OK,到此为止,你就可以编译ChocolateMilk项目试试是不是一切正常了,不过请确认拷贝的目标目录事先建立好。

     

    接下来我们设置应用程序项目PureMilk:
    1.使用“/GMA/Temp/Compile/”作为项目编译时使用的中间目录
    2.使用“/GMA/Temp/Link/”作为项目链接的输出目录
    首先将配置改成All Configuration(全部配置),这样可以让我们同时修改Debug和Release的部分;
    Output Directory(输出目录,链接器)栏位填入:
    $(SolutionDir)\Temp\Link\$(ProjectName)\$(ConfigurationName)
    Intermediate Directory(中间目录,编译器)栏位填入:
    $(SolutionDir)\Temp\Compile\$(ProjectName)\$(ConfigurationName)
    3.构建结束后拷贝执行文件到“/GMA/Bin/Release/”或“/GMA/Bin/Debug/”
    在Command Line中填入,All配置下:
    copy $(TargetPath)    $(SolutionDir)\Bin\$(ConfigurationName);
    4.调试时运行“/GMA/Bin/Debug/”或“/GMA/Bin/Release/”下面的执行文件,并以“/GMA/Bin/Debug/”或“/GMA/Bin/Release/”为工作目录

    Command栏位填入:$(SolutionDir)\Bin\$(ConfigurationName)\$(TargetFileName)
    Working Directory栏位填入:$(SolutionDir)\Bin\$(ConfigurationName)\
    这样就大功告成了,现在你就可以编译该执行程序并进行调试。

     

     

    以vs2010为列,一些项目属性截图如下:

    一、调试-》命令

    如上图设置,如果项目名称为ss,则TargetName系统变量的值就是ss,TargetExt是扩展名为exe,此时单击调试按钮(vs中的那个小三角形按钮),会起动图中所示目录下的ss-XX-.exe文件。

    注意:调试栏目下的所有选项都是为了调试服务的,如果不用调试按钮,这些选项就不起作用。至于VC++目录以及C/C++栏目是给编译器起作用的,无法是告诉编译器在哪里寻找头文件、库文件之类的事情,或者设置其他一些编译器选项,此不赘述。

     

    二、链接器-》常规-》输出文件  (表示链接器生成的exe文件放在哪以及生成的exe文件名称)

    上图中,如果项目名称为ss,则连接器生成的exe为图中所示目录下的ss-YY-.exe文件。一般来说这个文件的位置和名称要和上面所述的“命令”选项相同,以表示链接器生成的文件和调试时使用的文件一样。(注意调试时如果没有修改源代码操作,单击调试按钮后,为了加快调试速度,并不会对程序重新链接,也即不会启动链接器)

    经过我做过的一些实验证明,如果已经通过链接器生成了exe文件,手动修改这个exe文件名,调试时只要将上图所示的选项的文件名也进行相应的修改,一样可以进行调试并启动exe程序。

     

    三、链接器-》输入-》附加依赖项   (此选项是设置程序链接时使用的静态库。相当于链接已经编译好了的“代码”。由此我们可以简单的认为这些库就相当于我们写的.cpp文件,只不过这些库是编译好了的.cpp而已)

     

    最后说一下,在开发过程中,究竟怎样来让 Visual Studio 链接这些 lib 及 dll 文件会比较好呢?

     因为,在调试 Visual Studio 2008 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能依赖第三方库进行程序调试。

    这些动态链接库,往往都是测试版本或是开发中的版本,或者会有若干个版本;这个时候,如果直接把 dll 所在目录加到 PATH 里,则会有潜在冲突的危险;如果直接拷贝到 Visual Studio 的目录下,假如测试工程太多,每次有新版本的动态链接库更新时,你需要更新若干次,拷贝、粘贴苦不堪言。

    总体上来说,有几种方法可以改变 Visual Studio 的环境变量设置:

    1. 直接添加到系统的 PATH 变量里

      这个方法最简单,也最直接,但是坏处是会影响全局的 PATH 设置,尤其是你包含着大量测试用的 dll 时。

    2. 在 Visual Studio 全局设置里,把 dll 所在目录添加到 PATH 里:

      通过 Visual Studio 菜单 ==> 工具 ==> 选项 ==> 项目和解决方案 ==> VC++目录,在下拉框里选择"可执行文件",然后把 dll 所在路径添加进去。

    3. 直接把所有 dll 拷贝到 Visual Studio 工程目录下,或是拷贝到生成可执行文件的文件夹(默认情况下是 Debug 或 Release 目录)下:

      这个方法也很简单,但是当你有若干个工程时,你每次更新 SDK 及其 dll 文件,你就要把所有的工程都更新,这个不符合文件唯一性的工程性准则。

    4. 在调试程序时,让 Visual Studio 帮你切换当前工作目录到 dll 相应的目录下:

      在 Visual Studio ==> Project ==> Properties ==> Select Configuration ==> Configuration Properties ==> Debugging ==> Working directory 里填上 dll 所在目录,这样当在调试程序时,Visual Studio 会把当前工作目录切换到这个目录下,从而会自动读取本目录下的 dll 文件。

      这个方法的优点很明显,简单!副作用也很明显,在你切换了当前工作目录后,你可能会找不到程序的配置文件,在程序里写的诸如"./config.ini"全部都找不到了;另外,你要把所有的 dll 都放到这个工作目录里,否则一样会提示说找不到 xxx.dll 的问题。

    5. 最后一个方法,也是我认为最好的一个方法,在 Visual Studio 工程属性里把一个目录临时添加到 PATH 环境变量里:

      MSDN 上也有类似的介绍:How to: Set Environment Variables for Projects,方法很简单,在 "工程属性" ==> "调试" ==> "环境"里,添加类似如下所示的内容:

      PATH=%PATH%;$(TargetDir)\DLLS
      

      这样就可以把 $(TargetDir)\DLLS 临时添加到该工程所属的系统 PATH 里。

    大家可以根据项目的实际情况,灵活选用以上方法。

     

     

     

    附1:C#获取设置工作目录和执行目录代码

    (1)获取和设置当前工作目录

    a)          System.IO.Directory.GetCurrentDirectory()

    说明:获取应用程序的当前工作目录的完全限定路径。该方法是对Win32 APIGetCurrentDirectory函数的一个封装。

    例如:'"C:\Documents and Settings\Administrator\My Documents"

    b)         System.Environment.CurrentDirectory  

    说明:获取或设置当前工作目录的完全限定路径。该属性内部调用的就是System.IO.Directory.GetCurrentDirectory()方法,二者是效果是等价的。

    例如:'"C:\Documents and Settings\Administrator\My Documents"

    c)          System.IO.Path.GetFullPath(".")

    说明:获取指定路径字符串的绝对路径。也可以用GetFullPath(".\"),GetFullPath(".\\")

    例如:'"C:\Documents and Settings\Administrator\My Documents"

    (2)获取和设置当前执行目录

    a)          System.Windows.Forms.Application.StartupPath

    说明:获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。常用于WinForm.

    例如:'"D:\Projects\MyTest\bin"

    b)         System.AppDomain.CurrentDomain.BaseDirectory

    说明:获取基目录,它由程序集冲突解决程序用来探测程序集。返回路径末尾带“\

    例如:'"D:\Projects\MyTest\bin\"

    c)          System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

    说明:获取或设置包含该应用程序的目录的名称。返回路径末尾带“\

    例如:'"D:\Projects\MyTest\bin\"

    (3)获取和设置当前执行目录,包括可执行文件名

    a)          System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName

    说明:获取模块的完整路径。包括可执行文件的名称。

    例如:'"D:\Projects\MyTest\bin\MyTest.exe"

    b)         System.Windows.Forms.Application.ExecutablePath

    说明:获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。

    例如:'"D:\Projects\MyTest\bin\MyTest.exe"

    c)          System.Reflection.Assembly.GetExecutingAssembly().Location

    说明:如果包含清单的已加载文件没有被影像复制,则获取该文件的基本代码格式的位置。

    例如:'"D:\Projects\MyTest\bin\MyTest.exe"

    d)         System.Reflection.Assembly.GetExecutingAssembly().CodeBase

    说明:获取最初指定的程序集的位置,例如,在AssemblyName对象中指定的位置。

    例如:'"file:///D:/Projects/MyTest/bin/MyTest.exe"

     

     

    附2:vs(主要是.Net)中常用的各种类型的文件:

    附:*.ascx *.asax *.aspx.resx *.asax.resx是什么文件

    sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。 
    .csproj:项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。 
    .aspx:Web 窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。Visual Studio 将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。
    .aspx.cs:Web 窗体页的编程逻辑位于一个单独的类文件中,该文件称作代码隐藏类文件(.aspx.cs)。 
    .cs: 类模块代码文件。业务逻辑处理层的代码。 
    .asax:Global.asax 文件(也叫做 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或 HTTP 模块引发的应用程序级别事件的代码。
    .config:Web.config 文件向它们所在的目录和所有子目录提供配置信息。 
    .aspx.resx/.resx:资源文件,资源是在逻辑上由应用程序部署的任何非可执行数据。通过在资源文件中存储数据,无需重新编译整个应用程序即可更改数据。 
    .XSD:XML schema的一种.从DTD,XDR发展到XSD 
    .pdb:PDB(程序数据库)文件保持着调试和项目状态信息,从而可以对程序的调试配置进行增量链接。 
    .suo:解决方案用户选项,记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。 
    .asmx:asmx 文件包含 WebService 处理指令,并用作 XML Web services 的可寻址入口点 
    .vsdisco(项目发现)文件 基于 XML 的文件,它包含为 Web 服务提供发现信息的资源的链接 (URL)。 
    .htc:一个HTML文件,包含脚本和定义组件的一系列HTC特定元素.htc提供在脚本中implement组件的机制 

    .ascx 是用户控件代码文件
    .aspx webform html脚本文件
    .cs 是c#类文件)
    .vb 是vb类文件)
    .aspx.cs 和你的webform相关的后台c#代码文件,其实跟.cs是一样的
    .aspx.vb 和你的webform相关的后台VB代码文件,其实跟.vb是一样的
    web.config 配置文件
    .xml xml文件
    .css 样式表文件

     

    展开全文
  • 今天,当我一如既往打开VS2008准备开工的时候,意外发生了,项目属性窗口突然打不开了,我清晰地记得昨天我还在项目属性窗口中设置过项目运行参数,怎么今天就打不开了,难道晚上电脑被外星人临幸过? 着急啊,虽然...

    今天,当我一如既往打开VS2008准备开工的时候,意外发生了,项目属性窗口突然打不开了,我清晰地记得昨天我还在项目属性窗口中设置过项目运行参数,怎么今天就打不开了,难道晚上电脑被外星人临幸过?

    着急啊,虽然很多人项目属性不是很常用,但我今天急用啊,我试过“窗口-->重置窗口布局”,但是很遗憾没用。也试过修复VS2008,但提示“加载安装组件时遇到问题”,貌似修复很麻烦。

    最后,问题是这样解决的,这还真得感谢网上的高人:

    找到VS2008的IDE目录,我的是C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE,里面有一个devenv.exe文件。

    然后打开cmd命令行窗口,执行以下命令

    1
    2
    3
    cd C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE   回车
      
    devenv.exe /ResetSettings /setup

    其实就是为了运行以下devenv.exe重置以下IDE参数而已,这样我的VS2008的项目属性窗口就又回来了,哈哈~

    展开全文
  • 关于找不到.pdb的问题可以从以下方面解决: 例如opencv为例,如果是release x64运行的话,只能添加opencv_world330.lib 如果是debug模式,则只能添加opencv_world330d.lib 如果想让所有的新建工程都能找到的话,可以...
  •  我们在写完代码后需要对项目进行编译,这时候清爽明了的属性配置会让我们事半功倍。1.为导入的项目配置Qt 如果创建的时候就选择的是Qt项目,那下面的配置基本上都已经处理好了。 但如果是导入的Qt项目,则...
  • 最近在整理代码过程中,从2003的项目迁移到2008,发现有如下编译错误: 错误 26 在以下方法或属性之间的调用不明确:“CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(System.Collections....
  • 当我照着Spring Boot的开发手册上写hello world练习时,使用maven打包springboot项目运行提示jar中没有主清单属性。 出错原因:Spring Boot的maven依赖使用错了。 使用的依赖是自己在maven上找的spring-boot-...
  • 解决IE10以下对象不支持“bind”属性或方法
  • flex属性是 flex-grow + flex-shrink + flex-basis 的缩写。 1.赋给3个值 .item { flex: 100 200 300px; } // 等价于 .item { flex-grow: 100; flex-shrink: 200; flex-basis: 300px; } 2.赋值为auto...
  • 在Spring Boot项目中, 很多场景是将一个实体对象返回为JSON格式的字串, 但是在返回时需要指定一个String类型的属性返回的是Boolean类型的值。 举例来说:定义了一个Animal类,该类有两个属性 name: 名字 和extinct...
  • 最近重新拾起了vue项目,因为之前开始习惯使用VSCode编码,因此在打开vue项目时,vue的语法v-for默认报错。以下是解决方法。 示例错误: 图中v-for语法报错是因为咱们的写的语法不够严谨,因为安装了vetur插件 ...
  • android的属性动画

    千次阅读 2016-06-20 12:48:17
    属性动画(Property Animation)系统是一个更加强大的框架,它几乎允许你为任何东西设置动画。不管一个对象是否需要绘制到屏幕上面,你都可以定义一个动画让这个对象的属性随着时间推移而改变。一个属性动画可以在...
  • 错误 无法导入以下密钥文件: xxxxxx_TemporaryKey.pfx。...若要更正此问题,请尝试再次导入证书,或手动将证书安装到具有以下密钥容器名称的强...打开项目属性页,对 “选择强名称密钥文件”,” 更改密码“项进行设置。
  • 这是vs2010的一个软件问题。...常用属性管理器的人会遇到这样的问题:点击重命名后,或更改了名称如加了空格, ...出现了以下的问题: 无法操作属性表, 或不显示属性表及列表诸项。
  • Xcode 11 新建项目适配 iOS 13 以下设备

    万次阅读 2020-11-29 14:49:01
    Xcode 11 及以后版本新建项目都会多了一对 SceneDelegate 类文件,这个 SceneDelegate 主要是给 iPadOS 用来做多窗口支持的,而且是仅在 iOS 13 及以上设备才支持,如果想让 App 支持低系统版本设备,就需要进行适配...
  • 文件属性及资源文件的使用

    千次阅读 2015-02-07 13:22:41
    一、C#文件属性1、什么是文件属性文件属性可以用来指示项目系统对应文件执行的操作。具体的操作见下文。Visual Basic和Visual C#的文件都具有4个属性:“FileName”、“BuildAcition”、“CustomTool”、”...
  • 在pom.xml中加入以下代码: org.apache.maven.plugins maven-shade-plugin 1.2.1 package shade
  • MSBuild 属性

    千次阅读 2011-12-27 17:19:39
    MSBuild 提供了一组保留的属性,这些属性存储有关项目文件和 MSBuild 二进制文件的信息。 这些属性的计算方式与其他 MSBuild 属性相同。 例如,要使用 MSBuildProjectFile 属性,应键入下面的内容: $...
  • Android项目的AndroidManifest.xml文件详解
  • 关于商品属性设计

    万次阅读 2016-01-26 13:29:24
    产品管理总结下,项目中碰到的“商品属性”问题 实际需求 实际需求 现在要做一个产品管理功能, 刚拿到公司的实际产品信息,发现跟以往项目中产品不同。每一类产品基本上除了 品牌、类别是公共的,其它属性名称,个...
  • 1.通过<properties>元素用户可以自定义一个或多个属性,然后在POM的其他地方使用${属性... 1)内置属性:${basedir}表示项目根目录,即pom.xml文件的目录。${version}表示项目版本。 2)POM属性:用户可以使...
  • cookie的属性

    千次阅读 2014-01-16 10:43:13
    除了name(名)和value(值),cookie还有以下一些可选属性,用来控制cookie的有效期,作用域,安全性等: expires属性——时间要转成GMT形式 : toGMTString();  指定了cookie的生存期,默认情况下cookie是暂时...
  • 自定义属性的定义与获取,看了hyman老师的Android制作微信6.0界面,以及Android制作的QQ5.0侧滑菜单,深有感触,感觉学到了不少的东西,两个项目里面都运用到了android属性的定义与获取,所以想在CSDN博客中做下总结...
  • 从box-sizing:border-box属性入手,来了解盒模型

    万次阅读 多人点赞 2018-06-20 14:02:00
    属性入手,来重新认识一下盒模型在实际项目中的运用。 背景:先声明一下运用的场景,假如项目布局使用的是自适应的布局方式,div给出的宽度是百分比的形式,即框占窗口宽度的50%,但边界和内边距是用像素来表示...
  • 构建 Spring Boot 项目并通过登录 DEMO 打通前后端的联系,为下一步开发打下基础。
  • Maven内置属性

    千次阅读 2014-12-23 10:02:12
    内置属性:主要有两个常用内置属性——${basedir}表示项目根目录,即包含pom.xml文件的目录;${version}表示项目版本。POM属性:pom中对应元素的值。例如${project.artifactId}对应了元素的值。具体有哪些PO
  • 项目管理复习题

    万次阅读 多人点赞 2020-09-18 11:54:44
    蓝字位注释,红字为错误原因,紫字为重点 ...提取码:j4jz 第一章 ...1、搬家属于项目。(√) 2、项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的永久性的努力。(×) 3、过程管理就是.
  • input标签属性详解大全

    万次阅读 多人点赞 2019-05-09 16:10:06
    我们先来了解一下input标签的几个基本控制属性。 name属性:元素的名称,也就是name的值代表当前input元素的名字; value属性:元素的默认值 1)当input type=“text”、“password”、"hidden"时,定义输入字段的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 520,488
精华内容 208,195
关键字:

以下属于项目的属性的是