• 升级到VS2008后的一些疑惑


    VS2008RTM发布后,经过10多个小时的下载,和3个小时左右的安装。终于体验上VS2008。由此产生了一些疑惑:

    1,升级还是兼容?

    之前比较担心的一个问题就是和VS2005的兼容问题,在下载安装之前还询问过已经安装了的朋友,被告知可以打开VS2005的解决方案。

    结果,还是像以前那样对VS2005的项目文件和sln文件进行升级,不过项目文件升级后的格式和VS2005的还是兼容的。

    VS2005的项目文件是这样开头:<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    VS2008的项目文件则是:<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">,另外在<PropertyGroup>中添加了如下节点:

    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <OldToolsVersion>2.0</OldToolsVersion>
    <UpgradeBackupLocation>
    </UpgradeBackupLocation>

    这样的话,对于既使用VS2005又使用VS2008的团队,只有建立两个sln文件分别用于不同版本的VS。

    如果VS2008对VS2008老项目不是用升级的方式,而是用兼容打开的方式,那么就无需这样麻烦了。

    2,我的VS2005项目升级后,在用C# 3.0?

    我把我的一个VS2005解决方案升级打开后,.NET Framework的版本没有改变,依旧是2.0

    但是在为类添加属性的时候发现一个有趣的问题:平时添加属性,我都是用prog这个Code Snippet ,结果:

    出现自动生成如下的代码:

    public int MyProperty { get; set; }

    晕!这可是C# 3.0中的Auto-Implemented Properties特性(自动实现属性,这个特性其实很好的)。

    赶快F6看看,结果能编译通过,看来虽然目标框架用的是.NET 2.0,但是编译器却用的C# 3.0。由此我得出一下的推论:

    VS2008的多定向Multi-Targeting只是在编译器级别的一个特性,在VS IDE中只是根据不同框架,引用适合的程序集;使用同一个C# 3.0的编译器来编译。

    (不知道我的推论对不对)。

    后来发现这个Auto-Implemented Properties特性还需要进一步加强,比如像下面这样写就不能编译通过:

    public int Age

    {

    get;

    set

    {

    if (value>150) Throw new Exception("Age is not real")

    }

    }

    非要写成完整的属性语法。难道就不能实现一个“部分自动实现属性”(Partial-Auto-Implemented Properties)吗?

    (后续疑问持续更新中……)

    分享到: 更多
  • 相关阅读:
    手机自动化
    记录
    Linux 死机了怎么办
    前端源码
    LNMP环境
    PHP学习之路(一)
    py
    蜘蛛问题
    mongodb
    【HTML/XML 2】XML基础知识点总结
  • 原文地址:https://www.cnblogs.com/redmoon/p/972551.html
Copyright © 2020-2023  润新知