vs版本的改变处理
今天要用VS2010打开VS2013,一直觉得VS2010到VS2012只是界面上扁平化的改变,平台工具集有改变但很大程度上可能向上兼容。在网上搜了一些文章,其中有一篇说到一个观点:
从VS2010开始,VS使用统一的.sln作为解决方案文件,到目前为止,每个版本的升级只是平台工具集的升级和优化,而解决方案是完全兼容的。你可以 用VS2013打开VS2010生成的解决方案,也可以用VS2010打开更高版本的VS2013生成解决方案
我的理解是,从VS2010开始,不再制作专有的文件格式,这只是一个xml格式的文本文件,其中决定了解决方案的平台工具集和VS版本。既然.sln只是个文本文件,重新设定其中指定的VS版本和平台工具集,也许可以用低版本打开高版本的解决方案。
那么就来尝试用vs2010来打开vs2013,以下是我的尝试记录,尝试中发现除了修改.sln后可以用vs2010打开vs2013,但还要修改项目的平台工具集以保证最好的兼容。
(1)直接打开

用VS2010打开VS2013生成的文件,产生如上提示。
选取一个vs2013的解决方案文件.sln,以文本文档方式打开它。(我用的是sublime text 2,我认为是款代替记事本的不错工具,性感而小巧。有人从Notapad+转为用它,自有其价值吧。)

在文件开头我们可以看到一些关键信息:
Format Version 12.00
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
表明该.sln生成的格式版本是12.00(vs2013),vs版本是12.0.21005.1(vs2013),最小兼容版本是10.0.40219.1(vs2010)。
那也许把该解决方案改成10.0.40219.1以上都行吧?
【版本区别】
像我这样的新手请注意这里,Version 12.00意味着版本为vs2013而非vs2012,本文末最后已总结了vs版本中的该现象。下一步中改Format Version 为11.00而非10.00
(2)修改.sln文件。

(3)重新打开
用VS2010打开修改后的解决方案文件,成功打开。

(4)编译
我想起vs2012和vs2010的平台工具集不一致,vs2012是v110,vs2010是v100,vs2013则是v120。我想先不去项目文件里查看,也许在加载解决方案的时候vs已经重置了平台工具集?于是尝试①直接编译。

编译失败,因为结果平台工具集未重置,本机上没有vs2013,找不到v120的平台工具集。同时,注意到,有“项目文件包含ToolsVersion="12.0" 设置……将项目视为具有ToolsVersion="4.0" 设置”。这似乎是.Net的工具版本号,不修改的话会自动兼容。
②手动修改之平台工具集版本,编译看能否运行。

改为

③编译通过,运行成功。同时,ToolsVersion的版本号是被视为4.0了。

④去查找对应ToolsVersion的项目文件,修改之。


改为

重新编译,未报错。

⑤综合以上,该该项目已经实现从VS2013到VS2010的迁移。
【总结】
低版本VS打开高版本一般要修改的地方。
1、.sln文件中指定的VS版本号和平台工具集
2、修改项目文件中的平台工具集(v4.0→v12.0)
3、其它。
上述“其它”,主要指在
配置中与环境变量有关的因版本改变而导致的路径改变,比如vs2010中的部分lib在 VS 安装目录下的 Microsoft SDKs\v7.x
中,在vs2012以后转移到了 VS 安装目录下的Windows Kits中VS 安装目录。注意区别。
转自:http://blog.csdn.net/civilman/article/details/40109483
vs版本的改变处理的更多相关文章
- 【转】ubuntu 配置 java jdk1.8 环境,增加多版本 jdk 和切换方法
一.安装java jdk1.8 1.添加软件源 sudo add-apt-repository ppa:webupd8team/java 2.更新软件源 sudo apt-get update 3.安 ...
- Ubuntu下两个gcc版本切换
Ubuntu系统使用的gcc版本随着发布版本的不同而不同,在编译Android系统时不同的版本推荐用不同的gcc去编译,那么可不可以改变系统的gcc来适应android编译环境的需求呢?答案是可以的. ...
- maven快照版本和发布版本
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...
- Jenkins遇到问题三:调整jdk版本不生效的解决办法
由于项目统一环境的需要,需要将jdk版本从1.7降到1.6,通过修改“系统管理”菜单下的“系统设置”下的jdk环境变量: 将红圈中的路径修改为jdk6,如图所示:保存退出:发现通过”读取设置“和重启j ...
- VC++使用WebBrowser控件,强制给控件指定版本显示网页
转载:http://www.cnblogs.com/1175429393wljblog/p/5398928.html 最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. ...
- Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项
随着Azure PowerShell 1.0.0+的推出,越来越多的客户开始使用新的版本的Azure PowerShell.此版本的PowerShell最大的改变在于将原先的Switch-AzureM ...
- 手动替换GCC版本
当我们的系统里面会有2个以上版本的gcc时,系统会缺省的默认一个gcc版本,当然我们可以更改系统的默认配置,来降低gcc.g++的版本以满足不同的需求. 1.查看GCC的版本信息 $ls /usr/b ...
- Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
一.前言 目前正在准备从eclipse开发环境向AndroidStudio迁移,提前过去探探路,不出所料,原来gradle脚本果然报错,无法运行,想想索性把本地的gradle一起升级到最新版本,毕竟1 ...
- ActiveReports 6:如何升级旧版本的项目
如果现在的项目使用的是ActiveReports for .NET 3.0,那么有两种升级方式: 一是使用ActiveReports 6.0附带的转换工具(参见下面"升级ActiveRepo ...
随机推荐
- ASP.NET文件的上传下载提交分页
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" Auto ...
- C#闪屏
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 【leetcode❤python】Move Zeroes
#-*- coding: UTF-8 -*- #filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,#把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤.最终一 ...
- 终端、shell、bash的区别联系
最佳答案 终端,即所谓的命令行界面,又称命令终端,用户输入shell命令用的窗口,跟Windows里的DOS界面差不多. shell,Shell就是用户和操作系统之间的壳,中介,GUI和CLI都算是S ...
- include_path详细解析
include_path详细解析 原文地址:http://www.laruence.com/2010/05/04/1450.html 1.php默认的包含路径为 .;C:\php\pear 即 ...
- 如何使用NUnit
http://www.c-sharpcorner.com/UploadFile/84c85b/nunit-with-C-Sharp/ 从github上下载安装包 NUnit.3.4.1.msi htt ...
- Changing Icon File Of Push Button At Runtime In Oracle Forms 6i
Set Icon_File property in When-Mouse-Enter trigger Suppose you are creating icon based menu system i ...
- Ant build ${renderscript.opt.level}问题解决方案
问题如下: BUILD FAILEDD:\adt-bundle-windows-x86_64-20131030\sdk\tools\ant\build.xml:653: The following e ...
- c++ 临时变量
C++的临时变量 它们是被神所遗弃的孩子,没有人见过它们,更没有人知道它们的名字.它们命中注定徘徊于命运边缘高耸的悬崖和幽深的深渊之间,用自己短暂的生命抚平了生与死之间的缝隙.譬如朝露,却与阳光无缘. ...
- JCO事务管理
/* * 标准对账单过账 * @account 标准对账单号 * @year 年度 */ public List<String> doAccountStatmentPost(String ...