代码改变世界

设置VS visual studio

2012-04-01 14:16  youxin  阅读(4529)  评论(0编辑  收藏  举报

 

 

 

 如果你不喜欢白底黑字的颜色配置,可以更改vs2010所有的颜色(不仅仅是文本编辑器的背景颜色)。

   在VS2010的菜单中的:工具====》扩展管理器===》联机库,在其中找到 Visual studio coloer theme editor

然后安装该库,这款扩展提供对Visual Studio 2010整个颜色样式的编辑,它默认提供了8种样式,我们还可以自定义其颜色样式。

  建议使用一些牛人已经配置好的颜色。去Visual Studio Programmer Themes Gallery 上面有很多配置好的颜色theme,不过这个是vs2005的,不同版本的vs scheme略有不同。

ide设置 http://msdn.microsoft.com/zh-cn/library/zbhkx167(v=vs.90).aspx,上面说:

什么是设置?

设置是对 IDE 进行自定义,包括窗口布局、编辑器默认设置、IntelliSense 代码段和可用的对话框选项等,可以保存、导出、导入或重置这些自定义设置,以使 IDE 用起来更加得心应手。

活动设置由两部分组成:一部分是预定义的自定义设置,这类设置来自第一次启动 Visual Studio 时所选择安装的 .vssettings 文件;另一部分是您对 IDE 所做的任何后续自定义设置。默认情况下,活动设置保存在 Currentsettings.vssettings 中

如何:更改选择设置

更改选择设置

  1. “工具”菜单上选择“导入和导出设置”

  2. “欢迎使用‘导入和导出设置向导’”页上单击“导入选定的环境设置”,再单击“下一步”

  3. “保存当前设置”页上选择“是,保存我的当前设置”,然后单击“下一步”

  4. “要导入哪个设置集合”的列表中选择一个设置集合,然后单击“下一步”

  5. “要导入哪些设置”中,展开列表,并仅选择要应用于当前设置的类别或类别项。

  6. 单击“完成”

    “重置完成”页的“详细信息”下列出了与重置设置有关的所有错误.不过没有这些别人写的scheme,自己可以手动配置。常用的配置;

    括号匹配: 凡是括号,鼠标点上去后会变色。改为显眼一点的颜色。

    高亮显示当前行:突出高亮显示当前鼠标行,通过工具中字体和颜色选项"当前行(扩展部分)"配置通过改变默认颜色设置

    高亮显示断点或当前所在的代码行:菜单:工具》选项》调试》常规,选中“为断点或当前语句突出显示整个行源”项。

      不喜欢默认的颜色,可以在选项>环境》字体和颜色》选择断点(启用),设置新颜色

     Go To Definition:f12,只需把光标放在你想的位置处,不用选中。

visual stduio添加现有文件夹的方法

选择左侧的解决方案,然后点击菜单【项目】-》显示所有文件,则会显示目录下所有的文件和文件夹。选中它,然后右键【包含到项目中】

visual studio 工程目录,添加文件夹 和添加筛选器 的区别, 请看http://bbs.csdn.net/topics/390838516

看菜单: 项目-->显示所有文件   
勾上,则在解决方案中按目录显示,右键菜单可以添加文
不勾上,则在解决方案中按筛选器显示,右键菜单可以添加筛选器

 

 

 vs筛选器filter

使用vs2010开发项目时,有时源码文件过多,想按功能进行分类管理,这个时候就可以使用“筛选器(filter)”。

添加筛选器很简单,在项目上右键单击,选择“添加 | 新建筛选器”,然后命名就可以了。之后向筛选器中添加文件。创建筛选器之后,要注意工程目录下的“*.filters”文件一定不能删掉,因为这个文件就是用来记录筛选器的。

还有一个问题就是,有时候不但希望在vs2010 IDE里面,分类管理文件。还希望这些源码文件在实际的物理存储上,也按照筛选器同样的文件夹层次进行存放。这样也可以,比如在工程目录下新建一个DirectShow文件夹,然后按层次创建其子文件夹。不同功能的源码依据功能分别放在不同的子文件夹里面。然后按照实际文件夹的目录层次,一级一级创建筛选器,最后在每一级筛选器中添加相应的文件即可。

这样有一个问题就是头文件包含麻烦了,可能某个文件需要include的头文件,在另一个子文件夹里面。这个时候就需要在include的时候,使用“..\(上级目录)Utilities\CMsgStation.h”、“.\(当前目录)DirectShow\Device\CVideoDevices.h”等等。这样比较麻烦,有一个解决方法就是添加工程的“包含(include)目录”,比如设置为:$(ProjectDir)XXX,其中$(ProjectDir)是vc编译器的预定义宏,代表当前工程目录。这样include XXX目录下的头文件yyy.h时,就可以直接include “yyy.h”了。

 

vs修改输出目录后遇到的问题:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(989,5): warning MSB8012: TargetPath(C:\MyProj\Release\MyProj.dll) does not match the Linker's OutputFile property value (). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetExt(.dll) does not match the Linker's OutputFile property value (). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetName(MyProj) does not match the Linker's OutputFile property value (). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配

相关资料:

一、VS2010编译器中常见的环境变量有:
$(OutDir)、$(TargetName) 、 $(TargetExt)、$(ProjectName)、$(TargetFileName)



二、环境变量含义:
解决方案目录:$(SolutionDir)即为*.sln文件所在文件夹,尾带   ‘/’
工程目录:$(ProjectDir) 即 为*.vcproj文件所在文件夹,尾带   ‘/’   
输出目录(OutDir):  $(ProjectDir)$(PlatformName)/$(ConfigurationName) 
中间目录(IntDir): $(OutDir)/Intermediate 
输出文件:$(OutDir)/$(ProjectName).exe 
平台名称:$(PlatformName) 一般是Win32,除非你的工程选项选的是"Itanium"或者"Pocket PC 2003 (ARMV4)"
解决方案配置名称:$(ConfigurationName) 一般是Debug或者Release,$(PlatformName)\$(ConfigurationName)的一个示范是等于“Win32\Debug”


三、其它
编译事件支持的命令:
copy/del/xcopy...
如:copy "$(OutDir)$(TargetName)$(TargetExt)" "e:\"
默认输出文件:$(OutDir)$(TargetName)$(TargetExt),默认等于$(TargetPath)。

 

vs2013新建项目默认属性:

默认输出目录;
 $(SolutionDir)$(Configuration) $(Configuration)为debug或release。

连接器常规-》输出:$(OutDir)$(TargetName)$(TargetExt)

 这里的连接器输出实际上是最终的exe输出位置。如果配置和常规里面的输出目录配置不协调,会输出:

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(1186,5): warning MSB8012: TargetPath(F:\vsproject\duilibLearn\Debug\duiLogin.exe) does not match the Linker's OutputFile property value (F:\vsproject\duilibLearn\duiLogin.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1> duiLogin.vcxproj -> F:\vsproject\duilibLearn\Debug\duiLogin.exe

 

 

涉及到的配置:
项目编译时使用的中间目录;
项目链接的输出目录;
项目编译结束后,拷贝生成的 dll 和 lib 到指定目录;
项目编译结束后,拷贝需要的 dll 到输出目录;
设置项目的工作目录;
设置调试时执行的 exe 和工作目录;


配置时使用到的一些宏:
ConfigurationName   配置名字,通常是Debug或者Release
IntDir              编译器使用的中间目录,产出obj文件
OutDir              链接器使用的输出目录
ProjectDir          项目目录
ProjectName         项目名字
SolutionDir         解决方案目录
TargetDir           目标输出文件所在的目录
TargetExt           目标输出的扩展名
TargetFileName      目标输出文件名,包括扩展名
TargetName          目标输出名,不包括扩展名
TargetPath          目标输出文件的全路径名


下面以 Sticker 为例展示目录结构设置的过程:
Sticker 目录结构:
Sticker
    +-- 3rd (第三方库)
    |   +-- dll
    |   |   +-- debug
    |   |   +-- release
    |   +-- lib
    |   |   +-- debug
    |   |   +-- release
    |   +-- include
    |
    +-- src (源码)
    |   +-- Sticker
    |   |   +-- Sticker 项目的代码
    |   +-- StickerLibrary
    |   |   +-- StickerLibrary 项目的代码
    |   +-- Sticker.sln
    |
    +-- xar (脚本)
    |   +-- Sticker
    |   +-- ...
    |
    +-- doc (文档)
    |
    +-- bin (可执行文件)
    |   +-- debug
    |   +-- release
    |
    +-- temp (中间目录)
        +-- compile
        |   +-- debug
        |   +-- release
        +-- link
            +-- debug
            +-- release

1. 创建文件夹 Sticker\src
2. 创建一个空的解决方案 Sticker.sln ,放入 Sticker\src 中
3. 创建项目 Sticker
4. 属性 --> 配置 设定为“所有配置”,这样可以同时设定 debug\release 下的配置
5. 配置属性 --> 常规 --> 中间目录: $(SolutionDir)..\temp\compile\$(ConfigurationName)
6. 配置属性 --> 常规 --> 输出目录: $(SolutionDir)..\temp\link\$(ConfigurationName)
7. 配置属性 --> C/C++ --> 常规 --> 附加包含目录: "$(SolutionDir)..\3rd\include"
8. 配置属性 --> 链接器 --> 常规 --> 附加库目录: "$(SolutionDir)..\3rd\lib\$(ConfigurationName)"
9. 配置属性 --> 链接器 --> 输入 --> 附加依赖项: xxx1.lib xxx2.lib xxx3.lib
10. 配置属性 --> 生成事件 --> 生成后事件 --> 命令行: 
    md $(SolutionDir)..\bin\$(ConfigurationName)
    copy $(TargetPath) $(SolutionDir)..\bin\$(ConfigurationName)
    copy $(SolutionDir)..\3rd\dll\$(ConfigurationName) $(SolutionDir)..\bin\$(ConfigurationName)
11. 配置属性 --> 调试 --> 命令: $(SolutionDir)..\bin\$(ConfigurationName)\$(TargetFileName)
12. 配置属性 --> 调试 --> 工作目录: $(SolutionDir)..\bin\$(ConfigurationName)\

 

问题:如果编译成功,但提示无法启动程序,前提是修改了输出文件的目录。

解决方案::项目->属性,将 “配置属性” 下的 “调试” 中的 ”命令“  的值改为和 ”链接器“ 中 ”输出文件的值“。

一篇文章:

项目配置及系统变量关系:

在vs2010的项目属性页,会有一些系统变量,如下:

SolutionDir:解决方案目录

Configuration:指debug或release

ProjectName:项目名字

 

IntDir:中间目录

TargetDir:生成exe或dll文件所在位置,如链接器-常规-输出文件为$(OutDir)$(TargetName)$(TargetExt)(即定义了exe输出位置,也就决定了TargetDit的值),此时TargetDir表示在XXX\lolution\debug\

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

TargetPath:目标输出文件的全路径名

ProjectDir:表示项目目录值,一般在“调试-工作目录”中设置该值

TargetExt:扩展名

PlatformToolsetVersion:

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

默认情况下“输出目录”和“输出文件”对应的目录值是一样的。

 

配置属性

             常规

                      输出目录:$(SolutionDir)$(Configuration)\

                      中间目录:$(Configuration)\ 

                      目标文件名:$(ProjectName)

                      目标文件扩展名:.exe

                      生成日志文件:$(IntDir)\$(MSBuildProjectName).log

            调试

                     命令:$(TargetPath),表示调试器要启动的exe全名,TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值

                     工作目录:$(ProjectDir)

C/C++

          预编译头

                    预编译头输出文件:$(IntDir)$(TargetName).pch

          输出文件

                    ASM列表位置:$(IntDir)

                    对象文件名:$(IntDir)

                    程序数据库文件名:$(IntDir)vc$(PlatformToolsetVersion).pdb

          浏览信息

                    浏览信息文件:$(IntDir)

链接器

          常规

                    输出文件:$(OutDir)$(TargetName)$(TargetExt)

         清单文件

                   清单文件:$(IntDir)$(TargetName)$(TargetExt).intermediate.manifest

         调试

                  生成程序数据库文件:$(TargetDir)$(TargetName).pdb

         优化:

                  按配置优化数据库:$(TargetDir)$(TargetName).pgd

 

 

关于vs输出目录,参考:

http://www.mamicode.com/info-detail-507829.html

VS项目属性的一些配置项的总结(important)

 

vs2010项目属性配置

 

vs2013新建文件自动保存为utf-8编码

http://jingyan.baidu.com/article/b907e627b68cb646e7891c28.html

 

在vs2013中设置全局的include和lib方法

在vs2008时设置include和lib都是全局的,也就是说对于每个项目不管是新建的还是以前的,都是公共的,但是在vs2010之后,对于一些全局的include和lib就需要对每个项目来进行设置,太麻烦了,因此这里就说一下在vs2010以及vs2013及以上设置全局的include和lib。

1、首先新建一个IncludeLib项目,然后打开属性管理器,(注意:默认情况下属性管理器是不显示的,要通过视图->其他窗口->属性管理器,如下图1所示),然后就会在解决方案里出现属性管理器,如下图2所示:
---------------------  

2、展开IncludeLib项目,然后出现有一个Debug和Release,分别展开其中有Microsoft.Cpp.Win32.user,如下图所示.

 

3、双击Debug中的,然后在弹出的对话框中选择VC++目录,设置包含目录和库目录,对应的就是Include和Lib,如下图所示:

 

 

4、以上是设置Debug,那么用同样方法可设置Release即可,以后不管是新建的还是旧的项目,默认打开都会被包含。