往返切换:使用Visual Studio 2010与2012工作于相同项目

openkk 12年前
   <p> 过去,当开发人员将一个 Visual Studio 项目迁移至新版本时,该项目将没法在任何一个早期版本中使用。Visual Studio 2012 RC 推出了一个叫做“项目往返切换(project round-tripping)“的特性,现在团队可以让项目在 Visual Studio 2010 和 2012 之间往返工作了。</p>    <p> Visual Studio 2010 SP1 包含了支持项目往返切换的框架。据 <a href="/misc/goto?guid=4958343667675772293">Visual Studio 博客</a>上说,</p>    <blockquote>     <p>在 Visual Studio 2010 中,我们启用了完整的多目标支持,用于服务 Visual Studio 与 .NET 运行时之间的一对一支持。它可以让 Visual Studio 2010 中创建的项目定向到老版本的 .NET Framework,这推进了我们启用 Visual Studio 项目在不同版本之间的往返切换的脚步。在 Visual Studio 11 中,我们自然而然地迈出了另一步,正确处理不同环境下的项目。</p>    </blockquote>    <p> 在使用往返切换功能之前,需要了解的重要事项是此类项目仅向后兼容 <a href="/misc/goto?guid=4958343668479822653">Visual Studio 2010 SP1</a>,并且应用程序必须目标定向为 .NET Framework 2-4。兼容性同样根据项目类型的不同而有所不同,有一些项目是完全不可行的。(微软已经提供了一份包含兼容性细节的<a href="/misc/goto?guid=4958343669291867079">清单</a>。)</p>    <p> <strong>项目行为</strong></p>    <p> 微软声明说,大部分项目在 Visual Studio 2010 SP1 与 2012 中的行为一致,从而往返切换没有问题。对于在构建路径上使用硬编码版本号的项目,它们中的版本号会自动更新为变量进行替代,所有的改动就仅限于此。应当可以无缝进行往返切换的项目类型有:Windows Forms、Sharepoint、WPF 以及大部分 SQL Server 项目。</p>    <p> 其他项目也可以自动升级用于支持往返切换。Visual Studio 2012 在项目打开时,会显示一个”检查项目及解决方案改动“的对话框并显示影响的条目。用户可以在升级发生前检查提到的改动,之后过程会创建一个备份。一旦 Visual Studio 2012 执行修改后,项目就可以同时在 2012 与 2010 SP1 中使用了。Silverlight 4 与5、Blend 和 Visual Studio 2010 Web 项目也属于此类。</p>    <p> 特定类型的项目在升级后的行为与此前的 Visual Studio 一样:一旦它们被转换后,将不能在任何其他版本的 Visual Studio 中使用。这些项目类型包括F#、LightSwitch 以及 SQL Server LocalDB。</p>    <p> <strong>不在此列的项目</strong></p>    <p> Windows Phone、Windows Mobile、Windows Azure 云工具、BizTalk 2010 R2 以及 Visual Studio 安装程序(*.msi)项目没法在 Visual Studio 2012 RC 中使用。微软对是否在最终版本中为上述类型的项目提供往返切换支持尚未说明。对于安装程序项目,微软鼓励开发人员使用 <a href="/misc/goto?guid=4958343670086542688">InstallShield Limited Edition for Visual Studio</a> 进行替代。</p>    <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958343670882281906">Round-Tripping: Using Visual Studio 2010 and 2012 on the Same Project</a></p>    <div id="come_from">    来自:     <a id="link_source2" href="/misc/goto?guid=4958343671698556487" target="_blank">InfoQ</a>    </div>