Visual Studio IconVisual Studio 2015 发行说明


许可条款 | Visual Studio 博客 | 开发者社区

注意

此版本不是最新版本的 Visual Studio。 若要下载最新版本,请访问 Visual Studio 2019 的当前发行说明


Visual Studio 2015 发布

可以查看 Visual Studio 2015 的所有版本的发行说明:

下载 Visual Studio 2015

可从 My.VisualStudio.com 下载 Visual Studio 2015。 My.VisualStudio.com 需要免费的 Dev Essentials 订阅或 Visual Studio 订阅


Release Notes IconVisual Studio 2015

发布时间:2015 年 7 月 20 日

此版本中新增功能摘要

其他更改:

  • Bug 修复和已知问题

此版本中新增功能的详细信息

适用于跨平台移动开发的 Visual C++

现在,可以轻松地跨多个应用平台共享、重复使用、生成、部署和调试所有特定于平台的代码,所有这些代码都在 Visual Studio 中的单个解决方案中。 以下是你可以执行的操作之一:

  • 从 Android 本机活动应用的模板或可在多个平台和 Xamarin 本机 Android 应用程序中使用的共享代码库创建项目。

  • 使用特定于平台的 IntelliSense 来浏览 API 并生成适用于 Android 或 Windows 目标的正确代码。

  • 为 x86 或 ARM 本机平台配置构建。

  • 将你的代码部署到附加的 Android 设备,或使将 Microsoft 的高性能 Android 仿真器用于进行测试。

  • 在 Visual Studio 调试器中设置断点、监视变量、查看堆栈并逐步执行代码。

  • 使用 LogCat 查看器从 Android 设备查看消息日志。 (Logcat 是一种诊断工具,对于良好的编辑>生成->调试体验至关重要。)
    使用 Logcat 执行以下操作:

    • 使用搜索栏搜索特定日志消息。
    • 使用切换自动注册轻松查看即将发布的日志消息。
    • 清除以前的日志输出消息。
    • 在各种日志级别之间进行选择。
  • 编写面向 iOS 平台的 C++ 代码,并利用我们的高级代码创作功能,例如,代码共享、跨平台 IntelliSense、重构和速览定义。 iOS 支持仍在进行中,因此请关注这一点。 可以通过对 bug 使用连接来向我们发送反馈。 此外,还可以在 Visual Studio IDE 中使用 Send-a-Smile 向我们发送快速的想法。

我们还添加或更新了以下内容:

  • 支持 Android API 级别 21 (Lollipop)。
  • 基于对 Android 进行文件支持的新模板,它允许使用外部生成系统(包括 NDK- BUILD)。
  • 所有模板中的预编译标头(包括动态共享库、静态库和跨平台移动模板)。

适用于 Apache Cordova 的 Visual Studio Tools

适用于 Apache Cordova 的 Visual Studio Tools 以前称为适用于 Visual Studio 的多设备混合应用,可以轻松生成、调试和测试一个简单的 Visual Studio 项目中面向 Android、iOS、Windows 和 Windows Phone 的跨平台应用。

以前的 CTP 中提供的所有功能现已在 Visual Studio 2015 RC 中提供,包括以下改进:

  • 更新保存波纹 - 无需重新生成!
  • 将应用部署到 iOS 模拟器或 Mac 上的连接设备时,从 Visual Studio 调试应用的 iOS 版本
  • 改进了包含的远程 iOS 生成代理的安全性,简化了配置
  • 改进的插件管理体验,包括支持从 Git 或文件系统向项目添加自定义插件
  • 从改进的 config.xml 设计器中选择特定于平台的配置选项
  • 支持 Apache Cordova 4.0.0。

我们听取了你的反馈,并扩大了可以调试的设备数量,如下所示:

  • 使用 jsHybugger 的 Android 4.4、Android 4.3 及更早版本
  • iOS 6、7 和 8
  • Windows Store 8.1

然后,我们进一步扩大了调试支持范围。 现在可以调试面向 Windows Phone 8.1 的 Apache Cordova 应用。

可以设置断点、检查变量、使用控制台,并在 Windows Phone 8.1 模拟器或附加设备上执行其他调试任务。

Debugging with Visual Studio Tools for Apache Cordova

我们添加了 RC 版本的 CLI 互操作性。 Visual Studio 中的 Cordova 项目现在将与对磁盘上项目文件夹所做的更改同步。 无论是使用第三方工具还是其他操作系统,更改都可以流入和流出 Visual Studio。 (Cordova 项目的默认文件结构基于 Apache Cordova 命令行工具预期的结构,可以更加轻松地直接使用 Apache Cordova CLI 或其他需要该文件夹结构的工具。)

适用于 Android 的 Visual Studio 模拟器

可以在 Visual Studio (Xamarin 或 C++) 的跨平台项目或适用于 Apache Cordova 的 Visual Studio Tools 中使用适用于 Android 的 Visual Studio 模拟器。 使用模拟器可以在不同平台模拟器之间切换,而不会发生 Hyper-V 冲突。 它支持各种传感器和模拟,包括 GPS/位置、加速计、屏幕旋转、缩放、SD 卡、相机、多触摸和网络访问。 它还支持 Android 版本 4.4(KitKat、API 级别 19)和 5.0(Lollipop、API 级别 21)。

适用于 Android 的 Visual Studio 模拟器支持 WiFi 模拟和从多个不同的设备硬件配置中进行选择的功能。

我们为 RTM 添加了以下新功能:

  • 新平台。 提供 Jellybean (API 17) 和 Lollipop 5.1 (API 22) 映像。
  • 命令行接口。 在命令提示符下导航到 %programfiles(x86)%\Microsoft Emulator Manager\1.0\emulatorcmd.exe 将允许你在不使用 UI 的情况下与模拟器管理器(列表、安装、启动配置文件等)进行交互。
  • 拖放 zip 库。 现在,将可闪烁的 zip 拖放到模拟器上将自动解压缩并安装它。
  • SD 卡选项卡。“其他工具”窗口中的这一新选项卡允许你向/从 SD 卡推送和拉取数据。
  • 自己获取。 可以在计算机上安装模拟器,而无需安装 Visual Studio。 模拟器管理器的快捷方式在“开始”菜单中显示,以便从任何开发工具链启动并使用它。

有关详细信息,请参阅适用于 Android 的 Visual Studio 模拟器

用于通用 Windows 应用开发的 Visual Studio Tools

用于通用 Windows 应用开发的 Visual Studio Tools 与 Visual Studio 设置集成。 这些工具使你能够构建 Windows 应用,这些应用跨所有 Windows 10 设备运行–口袋中的手机、包中的平板电脑或笔记本电脑、办公桌上的电脑、IoT 设备以及很快出现在家里的 Xbox 主机、Surface Hub 等。 此外,还可以使用这些工具生成利用 Windows 10 API 的 Windows 桌面应用程序。 有关详细信息,请参阅用于通用 Windows 应用的 Visual Studio Tools 中的新增功能

有关Windows应用开发的详细信息,请参阅通用 Windows 应用指南Windows 开发人员中心。 有关最新 Windows 版本和 SDK 的信息,请参阅 Windows 预览体验成员门户。

Visual C++

在此版本中,C++ 编译器和标准库已通过对 C++11 的增强支持和对某些 C++14 功能的初始支持进行了更新。 它们还包括针对 C++17 标准中预计会具有的某些功能的初步支持。

此外,已经修复了 500 多个编译器 bug,包括客户通过 Microsoft 开发者社区提交的许多错误 — 谢谢!

语言功能

我们添加了以下新功能,使编译器更接近标准 C++:

  • 可恢复函数 (resume/await) resume 和 await 关键字为异步编程提供语言级别支持并启用可恢复函数。 当前,此功能只能用于 x64 目标。 建议使用 C++17 [N3858]
  • 泛型(多态)Lambda 表达式 现在可以使用 auto 指定 Lambda 函数参数类型;编译器会在此上下文中解释 auto 以表示闭包的函数调用运算符是成员函数模板,并且 Lambda 表达式中的每次 auto 使用都对应于不同的模板类型参数。 C++14
  • 通用 Lambda 捕获表达式 也称为 init-capture。 现在可以将任意表达式的结果分配给 lambda 的 capture 子句中的变量。 这使得可以通过值捕获仅移动类型,并使 lambda 表达式可以在其闭包对象中定义任意数据成员。 C++14
  • 现在支持二进制文本。 这类文本具有前缀 0B 或 0b,仅由数字 0 和 1 组成。 C++14
  • 返回类型推导 现在可以推导普通函数的返回类型,包括具有多个返回语句的函数和递归函数。 这类函数定义前面带有 auto 关键字(如同带有尾随返回类型的函数定义),但是会省略尾随返回类型。 C++14
  • decltype(auto) 使用 auto 关键字初始化表达式的类型推导会从表达式中去除引用限定符和顶级 cv 限定符。 decltype(auto) 保留引用和 cv 限定符,现在可以在可使用 auto 的任何位置使用(除了用于引入具有推断或尾随返回类型的函数)。 C++14
  • 移动特殊成员函数的隐式生成 移动构造函数和移动赋值运算现在可在条件允许时隐式生成,从而使编译器完全符合 C++11 右值引用。 C++11
  • 继承构造函数 派生类现在可以通过在其定义中包含使用 Base::Base; 的语句,来指定它将继承其基类 Base 的构造函数。 派生类只能继承其基类的所有构造函数,无法仅继承特定基构造函数。 派生类无法从构造函数具有相同签名的多个基类继承,派生类也无法定义签名与其任何继承的构造函数相同的构造函数。 C++11
  • 对齐方式查询和控制 变量的对齐方式可以使用 alignof() 运算符进行查询,并使用 alignas() 说明符进行控制。 alignof () 在必须分配的类型实例上返回字节边界。对于引用,它返回引用类型的对齐方式,对于数组,它返回元素类型的对齐方式。 alignas() 控制变量的对齐方式;它采用常量或类型,其中类型是 alignas(alignof(type)) 的速记形式。 C++11
  • 扩展 sizeof 现在可以使用 sizeof(),在没有类或结构的实例的情况下确定类或结构成员变量的大小。 C++11
  • constexpr 对 C++11 constexpr 的部分支持。 C++11(部分)
  • 用户定义文本 (UDL) 现在可以将有意义的后缀追加到数值和字符串以便为它们提供特定语义。 编译器会将后缀文本解释为对适当 UDL 运算符的调用。 C++11
  • 线程安全的“神奇”静态对象 静态局部变量现在以线程安全的方式进行初始化,无需手动同步。 只有初始化是线程安全的,多个线程对静态局部变量的使用仍必须手动同步。 可以通过使用 /Zc:threadSafeInit- 标志避免对 CRT 形成依赖,来禁用线程安全的静态对象功能。 C++11
  • 线程本地存储 使用 thread_local 关键字声明应为每个线程创建一个独立对象。 C++11
  • noexcept 运算符现在可以用于检查表达式是否可能抛出异常。 noexcept 说明符现在可以用于指定函数不会引发异常。 C++11
  • 内联命名空间 现在可以将命名空间指定为内联命名空间,以将其内容提升到封闭命名空间中。 内联命名空间可以用于创建在默认情况下公开其最新版本的受版本控制的库,不过仍显式提供以前的 API 版本。 C++11
  • 无限制的联合 联合类型现在可以包含具有重要构造函数的类型。 必须定义此类联合的构造函数。 C++11
  • 新字符类型和 Unicode 文本 现在支持 UTF-8、UTF-16 和 UTF-32 中的字符文本和字符串,并引入了新字符类型 char16_t 和 char32_t。 字符文本可以具有前缀 u8 (UTF-8)、u (UTF-16) 或 U (UTF-32)(如 U'a),而字符串还可以使用原始字符串等效项 u8R(UTF-8 原始字符串)、uR(UTF-16 原始字符串)或 UR(UTF-32 原始字符串)作为前缀。 通用字符名可以在 unicode 文本中随意使用(如 u'\u00EF'、u8"\u00EF is i" 和 u"\U000000ef is I")。 C++11
  • func 预定义标识符 func 隐式定义为包含封闭函数的非限定和未限定名称的字符串。 C++11
  • __restrict __restrict 现在可以应用于引用。
  • Typename 关键字。 用户现在可以在模板模板参数中编写 typename 而不是类。 C++14
  • globals void operator delete (void *, std::size_t) noexceptvoid operator delete[] (void *, std::size_t) noexcept 现在可以重载。 C++14
  • 数字分隔符 现在,可以使用单引号来插插数字文本,使其更具可读性。 例如,int x = 1'000'000;。 C++14
  • 文本中的通用字符名称 现在可以编写基本字符(如“A”和换行符)作为文本中的代码点。 例如,const char *s = "\u0041\u000A";。 C++11
  • 非静态数据成员初始值设定项 现在适用于初始值设定项列表。 C++11
  • 特性 现在可以将函数指定为 [[noreturn]] 来告知编译器该函数不返回(尽管它可能抛出异常)。 现在还可以将各种构造指定为[[已弃用]]。 现在允许对命名空间和枚举器使用属性。 C++11、C++14 和 C++17
  • 用户定义的文本(UDL) 数字和字符串文本现在可以具有有意义的后缀,这些后缀可以对文本数据执行自定义计算。 C++11
  • 数据依赖项排序属性 现在可以将函数参数、lambda 参数或函数声明指定为 [[carries_dependency]],以改进频繁读取但很少修改的并发数据结构的优化。 C++11
  • 带有大括号 init 列表的自动自动规则 复制列表初始化的自动扣减现在将推断出 std::initializer 或格式不正确。 C++17

Visual C++ 库功能

  • 标准库类型的用户定义的文本 (UDL)<计时>、<字符串>和<复杂的>标头现在为方便起见提供 UDL 运算符。 例如,123ms 表示 std::chrono::milliseconds(123),"hello"s 表示 std::string("hello"),而 3.14i 表示 std::complex(0.0, 3.14)。
  • Null 前向迭代器 标准库现在允许创建不引用容器实例的前向迭代器。 此类迭代器进行值初始化,并比较是否等于特定容器类型。 将进行值初始化的迭代器与不进行值初始化的迭代器进行比较是不明确的。 C++14
  • quoted() 标准库现在支持 quoted() 函数,从而可以更方便地使用带引号的字符串值和 I/O。 借助 quoted(),会将整个带引号的字符串视为单个实体(因为非空格字符组成的字符串处于 I/O 流中);此外,可通过 I/O 操作保留转义序列。 C++14
  • 异类关联查找 标准库现在支持用于关联容器的异类查找函数。 此类函数实现按 key_type 以外的类型进行查找(只要该类型可与 key_type 进行比较)。 C++14
  • 编译时整数序列 标准库现在支持 integer_sequence 类型,该类型表示可以在编译时进行计算的一系列整数值,以便可以更方便地使用参数包并简化某些模板编程模式。 C++14
  • exchange() 标准库现在支持 std::exchange() 实用工具函数,用于将新值分配给对象并返回其旧值。 对于复杂类型,exchange() 可避免在移动构造函数可用时复制旧值、避免在新值是临时值或进行移动时复制新值,并接受任何类型作为新值,从而利用任何转换赋值运算法。 C++14
  • 双范围 equal()、is_permutation()、mismatch() 标准库现在支持接受两个范围的 std::equal()、std::is_permutation() 和 std::mismatch() 重载。 这些重载处理不同长度的序列。 C++14
  • get< T>() 标准库现在支持 get<T>() 模板函数,以允许按其类型对元组元素进行寻址。 如果元组包含同一类型的两个或多个元素,<>T() 元组无法按该类型进行寻;但是,仍然可以处理其他唯一类型的元素。 C++14
  • tuple_element_t 标准库现在支持 tuple_element_t<I, T> 类型别名,该别名是 typename tuple_element<I, T>::type 的别名。 这可为模板程序员提供一些便利(类似于 <>type_traits 中的其他 metafunction 类型别名)。 C++14
  • 文件系统“V3”技术规范 包含的文件系统技术规范实现已更新到最终版本。
  • 最小分配器 标准库现在始终支持最小分配器接口;值得注意的修复包括 std::function、shared_ptr、allocate_shared() 和 basic_string。 C++11
  • <计时> high_resolution_clock 和 steady_clock 的计时类型已修复。 C++11
  • constexpr 已在 C++ 标准库中实现。 C++11、C++14 和 C++17
  • quick_exit() 现在,可以通过调用 quick_exitquick_exit() 并在 at_quick_exit() 中运行清理代码来更干净地终止多线程进程。 C++11
  • void_t 支持高级模板元编程。 C++17
  • 如果已知这些转换是安全的,则现在允许转换为 unique_ptr<T[]>。 C++17
  • invoke() 允许函数对象、指向成员函数的指针,以及数据成员的指针使用统一语法调用。 C++17
  • noexcept 标准库清理了对某些函数的 noexcept 的使用。 C++17
  • uncaught_exceptions() 报告外部测试版中的异常数(可能超过 1)。 C++17
  • reference_wrapper 现在很难复制。 C++17
  • map/unordered_map 现在支持 insert_or_assign()/try_emplace()。 C++17
  • 现在提供 size()、empty() 和 data() 非成员函数。 C++17
  • auto_ptr、random_shuffle()旧<功能>机械在 C++11/14 中弃用,并在 C++17 中删除。 Visual Studio 2015 默认提供它们,但定义 _HAS_AUTO_PTR_ETC 到 0 个项目范围会删除其定义。
  • unique_ptr 工作分配现在受到精确约束。 C++17
  • 现在支持 bool_constant 作为 integral_constant< bool> 的别名。 C++17

Visual C++ 更快生成

  • 增量链接时代码生成 (LTG) 现在,你可以告诉 LTCG 仅重新生成受编辑影响的项目部分。 这可以显著减少使用 LTCG 的应用程序的链接时间。 使用 /LTG:incremental linker 开关激活此功能。
  • 静态库的增量链接 对其他代码模块引用的静态库的更改现在以增量方式进行链接。
  • /Debug:FastLink 使用新的 PDB 创建技术显著减少链接时间。
  • 对链接器进行了算法改进以减少链接时间。
  • 进行了允许更快生成使用大量模板的代码的改进。
  • 快速的按配置优化 (PGO) 检测 PGO 中引入了用于游戏和实时系统的新的、轻量级检测模式。 你现在可以在使用 PGO(与其他新功能一起,通过 /GENPROFILE 和 /FASTGETPROFILE 链接器开关提供)时平衡代码质量与生成速度。
  • 对象文件大小缩减 编译器和 C++ 标准库增强功能使对象文件和静态库显著减小。 这些增强功能不影响动态链接库 (DLL) 或可执行文件 (EXE) 的大小,因为从历史上看链接器已删除了冗余代码。

Visual C++ 性能和代码质量

  • 对自动向量化的改进。 我们改进了控制流 (if-then-else)、在 /O1(最小化大小)下编译时的向量化,并改进了总体矢量代码质量,包括对并行 STL 的支持、对基于范围更多的循环向量化,以及对 #pragma 循环 (ivdep) 的支持。
  • 对标量优化的改进。 对我们添加了更好的位测试操作代码生成、控制流合并和优化 (loop-if switching) 以及其他标量优化(例如,针对 std::min 和 std::max 的更好的代码生成)。
  • 按配置优化* (PGO)。 我们对 PGO 进行了许多增强,包括改进的引用集、更好的数据布局功能,以及以前做出的内联、速度与大小和布局决策重用的能力。
  • 控制流防护 (CFG)。 我们添加了新的安全功能;只需向项目添加新选项,Visual C++ 编译器现在会将额外的安全检查注入二进制文件中,以帮助检测劫持代码的尝试。 当检查触发时,它会停止执行代码,以免劫持者损坏数据或电脑。

注意

我们已更新命令选项。 现在应使用 /guard:cf,而不是像在早期版本中那样使用 /d2guard4 开关。

Visual C++ 工作效率、调试和诊断

我们通过以下功能针对 C++ 添加了重构支持:

  • 重命名符号 将符号的所有匹配项更改为新名称。
  • 函数提取 将所选代码移动到其自己的函数中。 此重构在 Visual Studio 库中作为 Visual Studio 扩展提供。
  • 实现纯虚函数 为类或结构继承的纯虚函数生成函数定义。 支持多个和递归继承。 从继承类定义激活此重构可实现所有继承的纯虚函数,从基类说明符激活可仅从该基类实现纯虚函数。
  • 创建声明或定义 从现有定义生成声明,或从现有声明生成默认定义。 从现有声明或定义,或是从 LightBulb 指示器访问此重构。
  • 移动函数定义 在源代码与头文件之间移动函数体。 从函数的签名激活此重构。
  • 转换为原始字符串 将包含转义序列的字符串转换为原始字符串。 支持的转移序列有 \n(换行符)、\t(制表符)、\'(单引号)、\"(双引号)和 ? (问号)。 通过在字符串中的任意位置右键单击来激活此功能。

Visual C++ 中的程序数据库 (PDB) 增强功能包括:

  • 解决方案扫描速度得到了提高,尤其是对于大型解决方案。
  • 在解决方案扫描过程中,不会再阻止“转到定义”这类操作(除了在首次打开新解决方案时的初始解决方案扫描过程中)。

IntelliSense 可读性改进:复杂模板实例化和 typedef 在参数帮助和快速信息中进行了简化,以使它们更易于阅读。

C++ 中的调试器可视化效果

向 Visual Studio 项目添加 Natvis 调试器可视化,以便方便地进行管理和源代码管理集成。 添加到项目的 Natvis 文件的评估优先级高于项目外部的 Natvis 可视化工具。 有关详细信息,请参阅在调试器中创建本机对象的自定义视图

由于 RC,你可以在 Android 上调试 C++ 时使用 Natvis 文件。 调试器包括许多常见模板的可视化效果,并支持加载添加到 C++ 项目的自定义文件。

本机内存诊断

  • 内存诊断会话 (Alt + F2) 使你可以监视本机应用程序的实时内存使用情况。
  • 内存快照 捕获应用程序堆内容的瞬间映像。 可以通过比较两个内存快照来检查堆状态中的差异。 停止应用程序之后,查看每个实例的对象类型、实例值和分配调用堆栈。

改进了从“监视”和“即时”窗口调用 C++ 函数时的死锁检测和恢复。

改进了编译器诊断 - 编译器提供有关可疑代码的增强警告。 添加了新警告(例如,隐藏的变量和不匹配的 printf 格式字符串)。 使现有警告消息更清楚明白。

/Wv 标志 - 特定编译器版本之后引入的警告。可以使用 /Wv:XX.YY.ZZZZ 标志禁用 XX.YY.ZZZZ。 除了通过 /Wv 标志指定的警告之外,还可以专门禁用其他警告。

改进了对调试优化代码的支持 - 在启用了 /Zi、/Zo 或 /Z7 标志的情况下调试代码。

Visual C++ 图形诊断

通过以下功能改进了图形诊断:

  • 连续捕获 通过一次捕获可最多捕获 30 个连续帧。
  • 编程捕获 以编程方式启动帧捕获。 编程捕获对于从不调用 Present 的程序中的调试计算着色器尤其有用,或者当呈现问题难以手动捕获,但是可以通过运行时的应用状态以编程方式进行预测时也尤其有用。
  • 增强的图形事件列表 添加了一个新的绘图调用视图,该视图会在按绘图调用组织的层次结构中显示捕获的事件及其状态。 你可以展开绘图调用以显示绘图调用时当前所处的设备状态;你可以进一步展开每种状态以显示设置其值的事件。
  • 支持 Windows Phone 8.1 图形诊断现在完全支持在 Phone 仿真程序中或在受限的手机上调试 Windows 应用。
  • 图形帧分析 此工具收集有关捕获的帧的性能度量;此外,它执行一组预定义试验,通过这些试验可深入了解应用各种纹理技术时会如何影响性能。 帧分析还从硬件收集性能计数器。
  • 图形分析的专用 UI 新的 Visual Studio 图形分析器窗口是一个用于分析图形帧的专用工作区。
  • 着色器编辑和应用 在捕获的日志中查看着色器代码更改的影响,而无需重新运行应用。
  • 可在“工具”->“选项”->“图形诊断”中配置捕获选项。>>
  • 命令行工具用于捕获和播放帧的命令行工具。
  • DirectX12 的图形诊断支持。 Visual Studio 图形诊断工具现在支持调试 DirectX 12 应用程序中的呈现问题。

新的 GPU 使用情况工具

Visual Studio 2015 中的 GPU 使用情况工具可用于了解 DirectX 应用程序的 GPU 使用情况。 实时运行应用程序期间,可以使用帧时间、帧速率和 GPU 使用率图表。 此外,通过收集和分析详细 GPU 使用情况数据,此工具提供对各个 DirectX 事件的 CPU 和 GPU 执行时间的深入了解,因此可以用于确定 CPU 或 GPU 是否为性能瓶颈。

启用 Visual C++ 托管测试项目调试

此版本中的新增功能:若要启用 Visual C++ 托管测试项目的调试,请转到“工具 | 选项 | 调试 | 常规”窗格,并选中“取消模块加载上的 JIT 优化(仅限托管)”选项。

C# 和 Visual Basic

语言功能

在此版本中,几个新的 C# 和 Visual Basic 语言功能有助于减少日常代码中的样板和杂乱,鼓励更具声明性的编程风格,并将这两种语言更紧密地结合在一起。 例如,对类型和成员声明以及 null 检查有语法改进。 此外,可以在表达式内声明局部变量,await 可用于 catch 和 finally 块。 其中许多功能仅针对早期版本中的两种语言之一实现,但在最终版本中,这两种语言均可用。

  • Nameof 提供了一种重构安全的方法来获取参数、成员或类型作为字符串的名称。
  • 使用 null 条件运算符,可以在访问和调用成员和索引器时获取内置的 null 检查。
  • 字符串内插:字符串内插提供了一种简洁的方式,用于描述字符串模板,这些模板将表达式插入格式字符串(仅在预览版(RTM 中的 VB 和 C#)中)。
  • 方法、仅限 getter 的属性等现在可以将单个表达式用作其主体,就像 lambda 一样。
  • 自动属性可以具有初始值设定项,并且不再需要资源库。
  • 索引初始值设定项:在对象初始值设定项内,现在可以初始化新对象的特定索引。 仅限 C#。
  • 异常筛选器允许查看异常,并确定是否使用给定的 catch 块捕获它。
  • 使用静态类的子句将静态成员直接引入范围,因此可以调用 WriteLine() 或 Sqrt(),而无需为类名添加前缀。
  • Await 现在在 catch 和 finally 块中工作,消除一些非常棘手的解决方法。

代码编辑器 UI 和编辑

C# 和 Visual Basic 的代码编辑器 UI 和编辑体验已替换为基于 .NET Compiler Platform (“Roslyn”) 构建的新体验。 你今天喜欢的许多功能都得到了改进。

  • 灯泡是 Visual Studio 编辑器中采取的所有快速操作的新主页,包括修复常见代码问题和重构代码。 在代码中出现问题时,灯泡会显示针对这些问题的建议修补程序。 所有重构操作都已移动到灯泡。 可以通过键入 Ctrl + <点>随时访问灯泡。

Light bulb shows suggestions

  • 有两个新的核心重构操作:内联临时变量和引入本地。 下面是新的引入本地功能的示例:

Introduce local light bulb

内联临时变量的示例:

Inline temporary light bulb

  • 首次添加了对 Visual Basic 的重构支持,并已移动到灯泡。
  • 重命名也得到了改进。现在,它会突出显示要重命名的标识符的所有实例,以便直接在编辑器中将所有实例键入新名称。

Improvements to inline renaming

  • 可以在键入时获取实时代码分析和自动修复,并提供针对 Microsoft 平台和 NuGet 包的特定代码感知指南。 在预览版中,需要通过从 NuGet 库中获取的 NuGet 包添加实时 FxCop 分析器,就像任何其他包一样。 拉取任何给定的实时规则时,它会取代等效的生成后 FxCop 规则,因此不会获得重复命中。 下面是 Azure 代码分析包中的一个示例。

An example from the Code Analysis for Azure package

  • 已重写 C# 和 Visual Basic 的表达式计算器。 改进包括对 Watch 和 Immediate Windows 中 LINQ 和 lambda 表达式的支持。

F#

语言和运行时功能

F# 4.0 包含许多填补空白的新语言和运行时新增功能,使更多内容“正常工作”,并提高关键领域的性能。 编译器和运行时也实现了许多 bug 和小型性能优化。

  • 构造函数作为一流函数 - 类名称现在可以用作一流的函数值,表示该类的构造函数。
  • “可变”和“ref”统一 - 现在可以随处使用“可变”语法,捕获的值将在需要时由编译器自动转换为基于堆的“ref”值。 如果开发人员希望在发生这种情况时收到通知,则添加了新的可选警告。
  • 用于提供方法的静态参数 - 类型提供程序提供的单个方法现在可以指定静态参数。
  • 不可为 null 提供的类型 - 现在可以通过标准 [<AllowNullLiteral(false)>] 将提供的类型指定为不可为 null 的类型。
  • 方法参数的隐式引号 - Expr<'t> 类型的方法参数现在可以透明地自动引用,同时传递参数值和生成它的表达式的 AST。
  • 扩展预处理器语法 - 布尔运算符 ||、&& 和 ! 现在可以在 #if 预处理器指令中使用 ( ) 分组。
  • 度量单位中的合理指数 - 度量单位现在支持理性指数,有时在物理科学(如电气工程)中使用
  • 简化使用带有“printf”样式函数的度量值单位 - 单位化数值现在可与数字 printf 格式说明符无缝配合,而无需删除单位。
  • 对高维 .NET 数组的支持 - F# 代码现在可以使用排名 5 或更高版本的 .NET 数组。
  • 对象初始值设定项中的扩展属性 - 现在可以在对象初始值设定项表达式中分配 Settable 扩展属性。
  • 从多个泛型接口实例化继承 - 现在允许 F#创作类从实现多个泛型接口实例化的类继承。
  • “StructuredFormatDisplayAttribute”中的多个属性 - 通过 [<StructuredFormatDisplay>] 指定的 %A 格式现在可以包含多个属性。
  • 前导“Microsoft”命名空间可选 - 从 FSharp.Core 使用或打开模块和命名空间时,前导“Microsoft”现在为可选。

F# 运行时

  • 数组、列表和 Seq 模块的规范化 - 集合处理函数集现在在数组、列表和 Seq 模块之间保持一致(禁止不适用于特定类型的 API),每个类型的专用优化实现。
  • 优化的结构哈希 - 进行了重大优化,以提高基元类型的泛型哈希比较的性能,从而导致 API(如“distinct”和“groupBy”)的性能提升。
  • 优化的非结构比较运算符 - 现在可以打开 FSharp.Core.Operators.NonStructuralComparison 模块,将默认的 F# 结构比较运算符替换为更高效的非结构运算符。 当使用自定义运算符实现(尤其是值类型)处理类型时,这可以提供显著的性能提升。
  • F# 列表上的切片语法 - F# 列表现在支持切片语法以获取子列表。
  • System.Net.WebClient 的异步扩展 - WebClient 扩展 AsyncDownloadFile 和 AsyncDownloadData 现已推出。
  • 更好的异步堆栈跟踪 - F# 异步计算中发生的异常现在携带更多用户友好的堆栈跟踪,从而更轻松地诊断问题。
  • Option 的互操作 API - 已将各种新 API 添加到 Option 模块,用于跟 null 对象和 System.Nullable 值互相转换。
  • OSystem.Decimal 值的引号活动模式 - 现在内置了一个活动模式,用于匹配引号中的常量文本 System.Decimal 值。

F# IDE 功能

Visual F# 工具中也有新的体验和功能,以及许多 bug 修复。

  • 脚本调试 - F# 脚本现在可以直接在 Visual Studio 调试器中进行调试。
  • 项目模板中的程序集元数据 - 所有 F# 项目模板现在都包含一个包含通用程序集级元数据属性的文件 AssemblyInfo.fs。
  • 集成的最新检查 - F# 项目现在在生成Visual Studio时正确报告其“最新”状态。
  • 对象初始值设定项中的 IntelliSense 完成 - 对象初始值设定项表达式现在支持使用 Ctrl+Space 进行可设置属性的 IntelliSense 完成。
  • 命名参数的 IntelliSense 完成 - 方法和构造函数调用现在支持使用Ctrl+Space 进行命名参数 IntelliSense 自动完成。
  • 有关文件夹支持的 Bug 修复 - Visual F# 工具不支持项目中的文件夹,但修复了许多项目系统 bug,改进了 Visual F# Power Tools 扩展添加的文件夹支持。

.NET Framework 4.6

最新版本的 .NET Framework 为 4.6。 它在应用程序开发技术(如 ASP.NET、Windows Communication Foundation 和 Windows Presentation Foundation)中提供了许多增强功能。 网络、.NET Framework 基类库和公共语言运行时(包括新的 64 位 JIT 编译器、通用 Windows 平台应用的本机代码编译、程序集加载程序改进)也发生了更改。

仅对更改进行采样包括:

  • ASP.NET 模型绑定方法现在返回任务。
  • ADO.NET 现在支持 SQL Server 2016 社区技术预览版 2 (CTP2) 中提供的 Always Encrypted 功能。
  • Windows Presentation Foundation (WPF) 为触摸和改进的 HDPI 布局提供更好的支持。
  • 除了 SSL 3.0 和 TLS 1.0 之外,Windows Communication Foundation (WCF) 现在还支持 SSL 版本 TLS 1.1 和 TLS 1.2。
  • .NET Framework 基类库包括垃圾回收、基于任务的异步模式和加密的增强功能。 它还添加了启用了 SIMD 的向量类型,以及对兼容性开关的支持,使开发人员能够为其库的新版本支持的功能提供统一选择退出机制。

有关添加到.NET Framework 的新功能的其他详细信息和完整列表,请参阅 .NET Framework中的新增功能

实体框架

此版本包括实体框架 7 的预览版和实体框架 6 的更新,主要包括 bug 修复和社区贡献。

实体框架 7

新版实体框架支持新的平台和新数据存储。 Windows Phone、Windows Store、ASP.NET 5 和传统桌面应用程序现在可以使用实体框架。 此版本的框架支持关系数据库和非关系数据存储,例如 Azure 表存储和 Redis。 它包括新 ASP.NET 5 项目中安装的 EF7 运行时的早期预览版。 有关 EF7 的详细信息,请参阅什么是 EF7

实体框架 6.x

此版本包括运行时和工具的实体框架 6.1.3 版本。 实体框架 6.1.3 包括 bug 修复和社区贡献;可以看到实体框架 6.1.3 中包含的更改列表。

实体框架 6.1.1 运行时包含在此版本中的多个位置。

  • 如果在尚未安装 EF 运行时的项目中使用实体框架工具创建新模型,则会安装运行时。
  • 运行时预安装在新的 ASP.NET 项目中,具体取决于所选的项目模板。

Visual Studio IDE

共享的帐户

此版本中的新增功能可以与其他应用共享添加到 Visual Studio 的用户帐户,例如 Blend for Visual Studio 或 Microsoft 测试管理器(反之亦然)。

共享项目

在此版本中,新模板可用于为 Visual Basic、C# 和 JavaScript 创建空共享项目。 这些共享项目现在可以由多个项目类型引用:

  • 任何非风格 VB/C# 项目(例如控制台应用、类库、Win 表单应用)
  • Windows Store 8.1 和 Windows Phone 8.1 (VB/C#/JavaScript)
  • Windows Phone Silverlight 8.0/8.1 (VB/C#)
  • WPF 和 PCL

可以通过引用管理器在“共享项目”选项卡上添加/删除对共享项目的引用。共享项目引用显示在解决方案资源管理器的“引用”节点下,但共享项目中的代码和资产被视为链接到主项目的文件。

代码编辑器(所有语言)

“在文件中查找”通过使后续结果追加到以前的结果中得到了改进;可以删除累积结果。

触摸支持现在可在 Visual Studio 编辑器中使用以下手势:

  • 滚动(常规滚动条和增强型滚动条上的编辑器图面上的点击和拖动)
  • 收缩到缩放
  • 通过点击编辑器边距选择整行,并通过双击来选择单词
  • 通过按住键调用编辑器上下文菜单

我们知道触摸有一个问题,即双击手势并不总是在较低的缩放级别可靠。 我们希望听取有关新触摸支持的反馈,特别是你可能会发现的任何问题。

XAML 设计器

Visual Studio 客户现在可以编辑其存储在使用情况上下文中的外部资源字典中的模板和样式。 此体验经过进一步优化,以使用速览在 XAML 设计器中启用真正的就地资源编辑。

自定义窗口布局

现在可以通过单击“窗口”菜单中的“保存窗口布局”来保存自定义窗口布局,并通过单击“窗口”菜单中的“应用窗口布局”来应用自定义布局。 还可以使用预分配的键盘快捷方式应用布局。 前九个布局还具有从 Ctrl + Alt + 1 到 Ctrl + Alt + 9 的键盘快捷方式。 可执行的其他任务包括通过单击“窗口”菜单中的“管理窗口布局”来删除、重命名和重新排序布局。

高分辨率图标

Visual Studio 支持命令栏、工具窗口工具栏(标准)、主菜单、错误列表、状态栏和某些解决方案资源管理器项目类型(如果设备以大于 100% DPI 缩放运行时)的高分辨率图标。

UI 改进

  • 菜单现在显示为标题大小写样式,而不是全部大写样式。
  • Visual C++ 属性页对话框的配置和平台下拉列表值已更改,以记住关闭和重新打开属性页时的最后一个用户选择。

Visual Studio 反馈

我们增强了发送皱眉表情的体验,并提供更好的工具来报告速度缓慢、挂起和崩溃。 现在可以附加文件或标记反馈,以便更好地描述问题。 此外,我们更新了“反馈”图标和菜单项,以提高可发现性。

Visual Studio 扩展性

  • 现在可以在 Visual Studio 扩展中使用高分辨率图标。
  • 此版本中不再支持外接程序。 我们删除了 Visual Studio 外接程序项目模板和外接程序管理器。 建议将外接程序转换为 VSPackage 扩展。 有关详细信息,请参阅常见问题解答:将外接程序转换为 VSPackage 扩展
  • 现在,即使未安装 Visual Studio SDK,也可以打开扩展性项目。
  • 此外,还可以使用 Visual Studio 安装程序安装 Visual Studio SDK,不再需要转到网站。 为此:在“添加删除程序”菜单上,右键单击 Visual Studio 2015,然后选择“修改”。 在 Visual Studio“设置”对话框中,查看“常用工具”下的 Visual Studio 扩展性工具。
  • 为了提高扩展项目的可移植性和共享性,可以使用 Visual Studio SDK 引用程序集的 NuGet 版本。 有关详细信息,请参阅 Visual Studio 扩展性发布的程序集。

详细了解 Visual Studio 扩展性

Blend

我们重新设计了 Blend for Visual Studio 2015,提供了一种改进的用户界面开发体验,用于创建漂亮的 XAML 应用。 Blend 具有与 Visual Studio 一致的时尚新外观、对解决方案和团队资源管理器的支持,以及丰富的文件重新加载体验,以促进 Blend 和 Visual Studio 之间的更好的工作流。 我们还提供了最想要的 Blend 功能,可帮助提高工作效率:

  • 现在,可以使用 XAML IntelliSense 更高效地编写 XAML,该 XAML 提供语句完成和源导航。
  • 还可以在上下文中查看和编辑与 XAML 速览定义一起使用的 XAML 控件和资源。
  • 现在,使用用于 XAML 调试的 UI 工具可以更轻松地查找和修复正在运行的应用中的 UI 问题,以便检查实时可视化树和树中任何元素的属性。
  • 添加了 NuGet 支持后,可以在 Blend 中管理 NuGet 包。
  • 我们还将“动画工作区”功能替换为功能更强大的“同步布局”功能,可用于创建许多不同的窗口布局,并在不同计算机之间漫游。
  • 对于宁愿使用键盘而不是鼠标的电源用户,我们让 Blend 设计器窗格完全可访问键盘。
  • 最后,作为 Microsoft 不断努力创建可普遍访问的软件的一部分,Blend 现在是一个全屏阅读器,可访问高对比度。

若要详细了解添加到 Blend 的新功能,请访问我们的预览博客文章。

调试和诊断

附加时托管的编辑并继续

从 RC 开始,可以在附加到 .NET 应用程序和环境变量时

在目标进程中 complus_forceenc设置为 1 时编辑并继续。

断点配置

新的断点设置窗口允许指定断点的条件和操作。 该窗口包括对断点条件和操作的改进 IntelliSense 支持。 可以使用撤消 (CTRL+Z) 还原已删除的断点。

调试器 Windows 中的 Lambda 表达式

现在可以在 C# 和 Visual Basic 的 Watch、即时和其他调试器窗口中使用 lambda 表达式。

性能提示

可以使用 PerfTips 功能查看在设置断点和执行调试器时直接在编辑器中执行的代码花费的时间。

GPU 使用情况

可以使用 GPU 使用情况工具了解 DirectX 应用程序的 GPU 使用情况。 实时运行应用程序期间,可以使用帧时间、帧速率和 GPU 使用率图表。 此外,通过收集和分析详细的 GPU 使用情况数据,此工具可以提供对各个 DirectX 事件的 CPU 和 GPU 执行时间的深入了解,因此对于确定性能瓶颈是 CPU 还是 GPU 非常有用。

C++ 调试器中的改进

当 C++ 调试器在断点处停止时,它可以执行代码以计算结果,例如在“监视”和“即时”窗口中显示数据。 如果调试器检测到调用的函数已死锁,它将尝试解决此问题。

当 C++ 调试器启动进程时,Windows 现在使用普通堆分配内存,而不是调试正常堆。 这样可更快地启动调试。

适用于 XAML 的 UI 调试工具

我们添加了两个新工具:实时可视化树和实时属性资源管理器,用于检查正在运行的 WPF 应用程序的可视化树,以及树中任何元素的属性。 借助这些工具,可以选择正在运行的应用中的任何元素,并显示最终、计算和呈现的属性。 这些工具还包括以下内容:

  • 实时可视化树。 现在,可以在调试会话期间查看正在运行的应用程序的完整可视化树。 在 Visual Studio 中按 F5 或附加到正在运行的应用程序时,可以使用实时可视化树。 可以使用实时可视化树选择正在运行的应用程序中的元素,以便在实时属性资源管理器中检查。 将显示后代计数,如果源信息可用,可以立即找到元素定义的文件和位置。
  • 实时属性资源管理器。 使用此新工具检查在正在运行的应用程序中的任何元素上设置的属性,这些属性按所设置的范围分组。 可以在调试会话期间修改这些属性,并在正在运行的应用程序中立即看到这些属性的更改。

搞清楚属性如何相互替代,以及为什么在设计时确定获胜行为可能会变得困难。 现在,通过使用适用于 XAML 的新 UI 调试工具,可以在运行时执行这些检查。

(将来的更新中将发布对 Windows 应用商店应用的支持。)

UI Debugging Tools for XAML, full screen

异常设置

可以使用异常设置工具窗口配置调试器异常设置。 新窗口是非模式的,包括改进的性能、搜索和筛选器功能。

Exceptions Settings - Break when Thrown window

时间线工具

我们的新时间线工具提供了应用程序用来检查、诊断和改进 WPF 和 Windows 应用商店 8.1 应用程序性能的资源的以方案为中心的视图。

性能和诊断中心中的时间线工具显示应用程序在准备 UI 帧和服务网络与磁盘请求方面花费的时间。 该工具在应用程序加载和页面加载等方案的上下文中执行此操作。

The new Timeline tool

诊断工具

我们添加了一个新的诊断工具窗口,在开始调试(按 F5)时显示。 “诊断工具”窗口包含以下功能:

  • 事件(使用 IntelliTrace)
    事件(使用 IntelliTrace)可以访问调试会话期间收集的所有调试器中断、输出和 IntelliTrace 事件。 数据既作为时间线呈现,又显示为表格视图。 这两个视图是同步的,可以相互交互。
  • 内存使用率
    内存使用情况工具可以在调试时监视应用的内存使用情况。 还可以获取并比较本机内存和托管内存的详细快照,以分析内存增长和内存泄漏的原因。
  • CPU 使用率
    CPU 使用情况工具可以在调试时监视应用程序的 CPU 使用率。
    (此工具替换 Visual Studio 2015 预览版中提供的 CPU 时间 PerfTip。)

在以前的版本中,“诊断工具”窗口支持以下项目类型和调试配置:

  • 托管 WPF、WinForms 和控制台项目
  • 本机 Win32、控制台和 MFC 项目
  • 仅使用 IIS express ASP.NET 4
  • 在本地运行的托管或本机 Windows 应用商店项目
    (不支持使用 JavaScript 或在手机上运行的 Windows 应用商店项目)

RC 版本中的“诊断工具”窗口具有以下改进:

  • 它可以移动到 Visual Studio 中的任何窗口位置,并记住调试会话之间的位置和大小
  • 当使用调试附加到进程时,它将出现并显示单个进程的数据 -> 附加到进程
  • 调试在 IIS 上运行的 ASP.NET 项目时出现
  • 调试 ASP.NET 5 项目时出现
  • 调试在远程 Windows 桌面设备上运行的应用时出现
  • 停止调试后,可以查看内存快照
  • 调试本机项目时,调试器事件(仅中断事件)可用

我们还为 RC 版本添加了以下新功能:

仅我的代码。 当按 F5 启动调试器时,它将仅显示代码,以便了解性能问题和异常,而不会受到框架和其他代码的干扰。 由于 IntelliTrace 中的这一新代码筛选功能会禁止显示系统代码并仅公开用户代码,因此可以更轻松地调试“仅我的代码”。

网络诊断工具。 在生成 Windows 应用商店应用以及在所有 Windows 10 设备(从 Windows Phone 到 Xbox 和 Windows 应用商店)上运行的通用应用时,此新的网络诊断工具可帮助诊断与网络相关的问题。

网络诊断工具记录有关应用的 HTTP 网络操作的信息,包括 HTTP 请求和响应标头、请求和响应有效负载、Cookie 和详细计时信息等。 网络诊断工具还有助于回答有关常见方案的问题,例如:

  • 身份验证相关问题(例如,无法访问资源的原因)
  • 缓存相关问题(例如,为何未获取最新版本的资源)
  • 运行应用的常见任务时下载的字节数
  • 访问和下载资源时的瓶颈在哪里

若要访问网络工具,请在 Visual Studio 2015 中打开“诊断工具”窗口。 在“调试”菜单中,选择“启动诊断工具(不调试)”。 或者,只需按 Alt + F2。

我们对调试时出现的“诊断工具”窗口进行了以下改进:

  • 应用中的事件现在在单个 IntelliTrace 事件跟踪中显示,而不是在 IntelliTrace 事件和输出事件跟踪之间拆分。
  • 应用的事件在程序正在运行时显示;现在,不再需要按“全部中断”才能看到事件。
  • 现在可以为代码中设置的跟踪点激活历史调试,以便查看源代码和调用堆栈。
  • 现在,可以在“内存使用情况”图中查看垃圾回收和快照事件,以便查看何时发生托管垃圾回收,以及使用内存使用情况工具获取快照的时间。

ASP.NET

ASP.NET 4.6

ASP.NET 模型绑定支持任务返回方法

ASP.NET 以前返回任务的模型绑定方法不受支持,并在运行时(如果已配置)抛出异常。 如果使用此类方法部署应用程序,则这些方法现在已正确执行。 此更改仅适用于专门面向 .NET 4.6 或更高版本的应用程序。

在 ASP.NET 应用程序中启用 .NET 编译器平台(“Roslyn”)

可以在任何 ASP.NET 4.6 项目中使用 C# 和 VB 的新语言功能。 VS 2015 中的 Web Forms 模板预安装了 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 包。

添加对 HTTP/2 的支持

在 Windows 10 和 .NET Framework 4.6 中,添加了对 HTTP/2 的支持。 HTTP/2 的主要目标是使用从浏览器到网站的单个连接来提高性能、延迟和网络使用情况。

更新了框架和控件以支持 Entity Framework 6

我们更新了动态数据框架、实体数据源控件和通用提供程序,以便它们与 Entity Framework 6 配合使用。

身份验证更新

ASP.NET 4.6 模板现在使用 Open Id 连接中间件对 Azure AD 进行身份验证。 这使得编程模型能够更轻松地使用 Azure AD 进行身份验证。

如果选择“个人用户帐户”选项,则 ASP.NET 4.6 模板演示如何使用 ASP.NET 标识使用双重身份验证和社交登录。

ASP.NET MVC 5.2.3、网页 3.2.3 和 Web API 5.2.3

我们更新了模板包,以使用 MVC 5.2、网页 3.2 和 Web API 2.2 的最新运行时包。 有关这些包更新的详细信息,请参阅 ASP.NET MVC 5.2.3、网页 3.2.3 和 Web API 5.2.3 版本博客文章。

ASP.NET Web API OData 5.3.1

我们更新了 Web API OData 基架,以使用 ASP.NET Web OData 5.3.1。 有关详细信息,请参阅 ASP.NET Web API OData 5.3 中的新增功能

SignalR 2.1.2

我们更新了模板包,以使用 SignalR 2.1.2。 请参阅 GitHub 上的 SignalR 发行说明

Microsoft Owin 3.0 包

我们更新了模板包,以使用 Microsoft Owin 3.0 NuGet 包。 请参阅 Katana 项目

ASP.NET Identity 2.2.1

ASP.NET Identity 2.2.1 有许多优于 2.1 的 bug 修复和性能改进。 有关详细信息,请阅读此 ASP.NET Identity 2.2.1 博客文章。

ASP.NET 工具更新

JSON 编辑器改进

我们在 JSON 编辑器中进行了一些改进,包括性能改进,例如异步加载 JSON 架构、子架构缓存以及支持更好的 IntelliSense。 此外,还有以下新功能:

  • JSON 架构验证。 根据架构下拉列表中定义的架构添加 JSON 架构验证功能。
  • 取消缩小上下文菜单。 可以右键单击 JSON 编辑器,然后选择“取消缩小上下文”菜单以统一 JSON 文件中的任何长数组。
  • 重新加载架构上下文菜单。 Visual Studio 将缓存从 Internet 下载的架构,即使在重启 Visual Studio 后,也会使用缓存。 如果知道架构已更改,可以使用上下文菜单“重新加载架构” Ctrl+Shift+J 重新下载活动 JSON 文档中的当前已用架构,然后在当前文档上立即使用它。
  • package.json/bower.json 的 IntelliSense。 除了证明 package.json 和 bower.json 文件的 IntelliSense 和验证外,Visual Studio还直接在 JSON 编辑器中为 Bower 和 npm 包提供实时 IntelliSense。
  • 重复属性验证。 JSON 编辑器现在将为任何重复属性提供验证。 这有助于捕获 JSON 文件创作的常见问题。
  • 通过完全支持 JSON 架构草案 v4 规范,对 IntelliSense 和 JSON 文件的验证的支持得到了很大的改进。 现在可以更轻松地识别所需的属性,编辑器可以轻松地按字母顺序对属性进行排序。 现在,格式化缩小的 JSON 文件将自动取消缩小。
  • 添加了对 SchemaStore.org 的支持,这是一个有用的 JSON 架构文件的开放源代码集合。 这意味着在 Visual Studio 中打开的任何 JSON 文件在 SchemaStore.org 上关联的架构会自动获取 IntelliSense 和验证。
  • 对 JSON 架构作者的支持还得到了更好的架构完整性验证的增强。

HTML 编辑器改进

HTML 编辑器更新了用于 Web 标准的 IntelliSense,并引入了以下新功能:

  • 优化客户端模板格式设置。 HTML 编辑器不再分析或格式化双曲语法 {{...}}。 这是为了确保该语法的内容未因处理 HTML 而无效,也不会尝试设置内容的格式,使用 HTML 格式化程序无法正确设置。 这非常适合 Angular、Handlebars、Mustache 和其他双花括号模板语法。
  • 支持自定义元素、聚合元素和属性。 HTML 编辑器不再验证自定义元素的未知属性,因为不同的框架有许多自定义标记。 未知元素下将不再有波浪线。
  • Web 组件的基本 IntelliSense。 HTML 编辑器具有用于链接 rel="import"/(属于 Web 组件标准的一部分)的 IntelliSense<>。
  • HTML 元素工具提示。 为编辑器中的 HTML 元素提供工具提示。
  • 区域支持。 现在,HTML 编辑器支持区域折叠。 也可以使用周围的代码片段来包围当前所选内容。
  • 任务列表中的 Todo/Hack 注释支持。
  • Angular 图标。 Angular 指令(例如 <<ng-view>)和属性(例如 ng-controller)现在都以 IntelliSense 显示,带有 Angular 徽标,以便轻松识别它们。
  • Bootstrap 图标。 如果类名是由 Bootstrap CSS 文件定义的,则 HTML 类属性中提供的 IntelliSense 现在会显示 Bootstrap 徽标。

CSS/LESS/Sass 编辑器改进

  • 任务列表中的 Todo/Hack 注释支持。
  • @viewport LESS 编辑器的修补程序。 在 LESS 编辑器中,@viewport 不再显示验证警告。
  • 提供更多代码片段。 CSS/LESS/Sass 编辑器现在提供更多代码片段,使开发体验更加轻松。
  • 扩展现在可用于 2015 Visual Studio,以编译 LESS、Scss 和 CoffeeScirpt。 可从此处下载。

JSX 编辑器 (React.js)

Visual Studio 现在支持具有 .jsx 文件扩展名的任何文件的 JSX 语法。 在键入时,在编辑器中获取 IntelliSense、格式设置和验证。 此编辑器与负责 React.js 库的 Facebook 团队协作构建。

浏览器链接

CSS 会自动同步。 在外部保存 CSS 文件或更改它(例如,使用 LESS/SASS 编译器)会导致整个 CSS 文件在浏览器中重新加载。 如果文件无法自动同步,Ctrl + S 会进行自动重新加载,并且应该将其重新置于良好状态,而无需刷新链接的浏览器(Ctrl + Alt + Enter)。 可以在工具栏中禁用该功能。

详细了解 ASP.NET

ASP.NET 5

ASP.NET 5 是一个精简且可组合的 .NET 堆栈,用于为云和本地服务器生成现代 Web 应用程序。 它包括以下功能:

  • 新的轻型请求管道
  • 在 IIS 上运行,或在你自己的进程中自承载
  • 基于新的 .NET 执行环境 (DNX) 构建,可在完整的 .NET Framework 或 .NET Core 上运行,是支持真实并行版本控制的新云优化运行时
  • 在 Windows、Mac 和 Linux 上跨平台运行
  • NuGet 所有内容,甚至运行时本身
  • 支持 ASP.NET MVC 6 - Web UI 和 Web API 的统一 Web 框架
  • 基于环境的配置,用于无缝过渡到云
  • 现成的依赖关系注入
  • 新的 Visual Studio 项目系统和高性能工具体验
  • 通过 .NET Foundation 在 GitHub 上的所有开放源代码

Visual Studio 2015 包括 ASP.NET 5 beta5 运行时包。 这些包仍处于预览状态,不建议在生产环境中使用。 可以在 GitHub 上已发布的发行说明中找到有关添加的特定增强功能和已修复的问题的所有详细信息。

Visual Studio 2015 附带了一个新的项目系统和集成工具体验,用于生成 ASP.NET 5 应用程序和处理 DNX 项目。 一些新的工具功能包括:

  • 用于创建基于跨平台 DNX 的项目的新项目系统,这些项目在 Windows、Mac 和 Linux 上生成和运行。
  • 用于使用 MVC 6、标识 3 和 Entity Framework 7 创建 ASP.NET 5 网站和 Web API 的模板。
  • 用于创建基于 DNX 的类库和控制台应用程序的模板
  • 通过 NuGet 创建和分发跨平台命令行工具。
  • 使用开发人员命令提示符中的 .NET 版本管理器 (DNVM) 安装和管理不同的 DNX 版本。
  • 用于查找、安装和还原 NuGet 包的集成体验。
  • 使用 CTRL + 。 在 C# 代码中查找并安装未解析的符号的 NuGet 包。
  • 使用 NPM、Grunt/Gulp 和 Bower 进行客户端 Web 开发的集成工具,包括包管理集成和新的任务运行程序资源管理器。
  • 使用“运行”按钮下拉菜单直接从 Visual Studio 中运行项目级 DNX 命令。
  • 创建自定义启动配置文件,用于启动IIS Express,包括自定义环境变量的设置。
  • 从面向多个框架(包括 .NET Core)的单个项目生成 NuGet 包。
  • 从单个项目为多个目标框架生成时,组合了 IntelliSense。
  • ASP.NET 5 引入的新 Razor 功能(如标记帮助程序)现在在 IntelliSense 和语法突出显示中都亮起。

此版本中的新功能

  • 打开需要 DNX 版本的项目时,Visual Studio 将提示安装所需的 DNX 版本。
  • 现在,可以使用“添加引用”对话框添加引用来丢失程序集。
  • ASP.NET 5 Web 应用程序模板现在支持用于身份验证的工作和学校帐户选项。
  • “新建 ASP.NET 项目”对话框中的“云中的主机”选项现在可用于 ASP.NET 5 项目。
  • 使用服务器资源管理器对 Azure 上托管的 ASP.NET 5 项目进行 approot 下的文件的远程编辑。

有关更多详细信息,请参阅 GitHub 上的工具发行说明.NET Web 开发和工具博客

Azure 工具

帐户选取器集成

帐户选取器在整个 Web 发布和 Web 应用创建/选择对话框中使用,以启用对多个帐户的一键式访问。 可以一次登录到多个帐户,并在发布资源时快速轻松地访问选择单个帐户。

API Apps

API 应用预览模板、发布支持和服务器资源管理器可见性已全部迁移到 2015 Visual Studio。 现在可以使用最新版本的 Visual Studio 创建和部署 Azure API 应用。 此外,我们改进了 Swagger 输出功能,以便 API 应用开发人员能够更好地支持从 ASP.NET Web API 动态生成的 Swagger。

WebJobs 工具

现在可以通过以下方式控制 Azure 网站内的服务器资源管理器 WebJob 节点上的 WebJob:

  • 服务器资源管理器中网站节点下方的 WebJobs 节点。
  • 从服务器资源管理器启动/停止连续 Web 作业。
  • 从服务器资源管理器运行按需作业或计划作业。
  • 从服务器资源管理器查看 WebJob 仪表板。
  • “查看仪表板”上下文菜单;使用它转到 Azure 网站的 WebJob 仪表板。

WebJobs SDK

Azure WebJob 项目模板预安装了 WebJobs SDK。

NuGet

NuGet 2.8.3

我们添加了对 DevExtreme 项目和 BizTalkProject 2.8.3 的支持。 有关详细信息,请参阅 NuGet 2.8.3 发行说明

NuGet 程序包管理器

我们更新了 NuGet 包管理器用户界面,以便更轻松地管理 2015 Visual Studio 整个解决方案中的包。 通过项目中安装的包的单个视图,可以筛选 NuGet 库中的可用包列表、已安装的包以及具有可用更新的包。

NuGet 库

我们改进了具有新 Web 服务和集成客户端的 NuGet 库的性能。 有关 NuGet 更新的更多详细信息,请参阅 http://docs.nuget.org

JavaScript

JavaScript 编辑器支持

我们更新了 JavaScript 编辑器,使其更加有用。

  • AngularJS 的工具支持。 现在,使用 AngularJS 编写应用时,IntelliSense 为 Angular 控制器、服务、工厂、指令和动画提供建议。
  • 支持新的 JavaScript 语言功能(从 ES6 版本的 JavaScript),包括类、箭头函数和模板字符串。
  • 导航栏共享项目支持。 现在可以将共享项目中的导航栏用于 Windows 通用应用项目。
  • 新的导航栏。 通过新的导航栏,可以在 JavaScript 源代码中的主要元素之间更轻松地导航。
  • JSDoc 注释。 使用 IntelliSense 时,现在会显示以 JSDoc 格式编写的文档注释。 (有关 JSDoc 注释的详细信息,请参阅 https://jsdoc.app/。)
  • 对象文本 IntelliSense。 JavaScript 编辑器在将对象文本传递给使用 JSDoc 记录的函数时提供 IntelliSense 建议。
  • 展开/折叠。 可以展开和折叠 JavaScript 代码的更多部分,包括多行注释、多行数组和所有多行块。
  • 任务列表支持。 可以使用任务列表功能查看 JavaScript 代码中的任务注释,例如 // TODO。

TypeScript

Visual Studio 2015 包括 TypeScript 工具的 1.5 版本。 此版本添加了对 ECMAScript 6(包括模块、析构、的、分布、符号、计算属性、ES3/ES5 的 let/const 和 ES3/ES5 的带标记字符串模板)的丰富支持。 除了对 ES6 的支持外,TypeScript 1.5 还添加了对实验 ES7 修饰器建议、UMD 和 System.js 模块输出的支持,以及名为“tsconfig.json”的新轻型可移植项目文件。

IntelliTest

在 Visual Studio 2015 中,我们添加了 IntelliTest,用于探索 .NET 代码以生成测试数据和单元测试套件。 对于代码中的每个语句,将生成执行该语句的测试输入。 为代码中的每个条件分支执行案例分析。 例如,

分析可能抛出异常的所有操作,例如 if 语句和断言。 此分析用于为你的每个方法生成参数化单元测试的测试数据,从而创建具有最大代码覆盖率的单元测试。 然后你可利用你的域知识改善这些单元测试。

我们还向 IntelliTest 添加了以下功能:

  • 参数化单元测试。 IntelliTest 支持可用于指导测试数据生成、指定测试代码的正确性属性并指导探索所测试的代码的 API。 此 API 在 Microsoft.Pex.Framework 命名空间中可用,可用于 IntelliTest 生成的测试方法(参数化单元测试、工厂方法)。 因此,“IntelliTest”上下文菜单命令现在也可从生成的测试方法获取。
  • 测试存根创建。 “创建单元测试”现在在上下文菜单上可用,该命令提供创建和配置测试项目、测试类和测试存根的功能。

有关 IntelliTest(以前称为“智能单元测试”)的详细信息,请参阅使用 IntelliTest 为代码生成单元测试

Application Insights

除了各种性能增强功能和 bug 修复,Application Insights 现在包含以下更新:

  • Visual Studio 中的 Application Insights 工具现在是 Visual Studio 连接服务的一部分。 (若要添加 Application Insights,请打开“连接服务”对话框,然后从服务列表中选择 Application Insights。)
  • 此更新与 Visual Studio 2013 Update 3 或 Visual Studio 2013 Update 4 中添加了 Application Insights 的项目完全兼容。
  • ASP.NET 5 开发人员、Windows 10 通用应用开发人员和 Windows 8.1 通用应用开发人员可以直接从 Visual Studio 将 Application Insights 添加到其项目中。
  • Windows 10 通用应用开发人员无需登录到 Azure 即可添加 Application Insights SDK;相反,他们可以通过在 Visual Studio 中使用 Application Insights 工具添加该应用程序。
  • 由于 Application Insights 在 Visual Studio 中使用全局帐户选取器,因此可以在 Visual Studio 中使用同一帐户。
  • 现在可以直接从项目的服务参考文件夹查看 Application Insights 的“入门”信息;只需单击“入门”文件夹。

View Getting Started information for Application Insights from a Project's Service Reference folder.

发布管理

借助此功能,可以改进管理应用发布的过程,将应用部署到每个独立阶段的特定环境,并管理每个步骤的审批过程中的步骤。 可以使用适用于 Visual Studio Online 的 Release Management 服务来设置从签入到部署的发布管道,而无需安装和维护本地发布管理服务器。

Release Management 的更新版本适用于 2015 Visual Studio。 这非常类似于现有的 Visual Studio Release Management 2013,但在以下方面提供改进的性能:

  • Release Management 客户端启动页,其中显示了发布过程和通知的概述。
  • 通过其他缓存在其他 Release Management 客户端页面中呈现和交互。
  • Active Directory 和 TFS 安全组的同步。
  • 创建新版本。

现在可以定义 Team Foundation Server 2015 中包含的新生成系统的生成定义的组件和发布定义。 定义组件时,还可以通过使用与生成定义中已发布项目的名称相同(或包含)的组件名称来指定组件的项目。

Git 版本控制

更容易使用分支和了解历史记录中的更改如何出现差异。

分支

可以通过指定前缀以分层方式组织分支:

本地分支和远程分支(包括未在本地创建的分支)在树视图中单独显示。

Git branches

从 RC 开始,我们修改了“分支”页:

  • 现在可以从远程分支以及本地分支进行合并。
  • 正在合并到的分支现在已修复为当前已签出的分支。
  • 现在可以将当前分支中的数据库重新定基到任何本地或远程分支。
  • 可以通过双击远程分支,或右键单击远程分支,然后选择“签出”,以签出远程分支。

远程管理

现在可以在团队资源管理器中配置 Git 远程。 在存储库设置中,有一个新的“远程”部分显示当前配置的远程,可以在其中添加、编辑或删除远程。 例如,如果需要更改源远程的 URL,可以单击“编辑”并更改提取和/或推送 URL。

详细历史记录

现在可以查看提交在历史记录中如何出现差异。

Detailed view of history

在图中,合并提交为灰色,非合并提交为更亮的颜色。 可以在简单视图和详细视图之间来回切换。 如果图形被截断,可以重设大小。

我们在 RC 版本中对 History 图形进行了多项更新:

  • 我们添加了一个工具栏,可用于控制在图形中看到的详细信息级别。
  • 现在突出显示历史记录行,以指示可从当前所选提交访问哪些提交。
  • 如果本地分支和远程分支不同,我们现在会显示这两行历史记录。 本地分支变基后,这尤其有用。

在团队资源管理器中变基

我们现在支持团队资源管理器中的变基。 若要启动变基,请单击“分支”页上的“变基”浮出控件,或右键单击分支并选择“变基到...”

VSO 存储库

我们改进了创建 VSO 存储库时的“入门”体验,并且还会有更多更改来简化新存储库的创建。 对于 RC,我们做了一个小的更改,以便更轻松地将新代码添加到现有存储库:如果使用团队资源管理器连接到任何存储库,则选择“文件”>“新项目”,对话框现在将从该连接的存储库的根目录中开始。

发布到 Visual Studio Online

“发布到 Visual Studio Online”功能极大地简化了将本地存储库放入 Visual Studio Online 的过程。 过去需要 12 个步骤,现在需要 2 个步骤。 在“团队资源管理器同步”页中,新的“发布到 Visual Studio Online”部分允许在 Visual Studio 帐户管理器中选择任何用户帐户。 Visual Studio Online 帐户在列表中自动可用,无需记住 URL。 准备好共享代码时,只需选择新的或现有的团队项目来托管存储库,单击“发布”即可完成。

Publish to Visual Studio Online dialog box

单一登录

与当今许多其他开发人员一样,在开发应用程序时,可以利用多个云服务。 例如,你可能已将云后端添加到应用程序以存储数据、将源代码存储在云中或将应用程序发布到存储区。

过去,每个服务都需要单独的登录过程,每个服务单独管理已登录的用户状态。

在此版本中,我们将减少访问 Visual Studio 中许多集成云服务所需的身份验证提示。 现在,在 Visual Studio 中向第一个云服务进行身份验证时,我们将自动登录,或减少其他集成云服务的身份验证提示。

CodeLens

了解有关代码的详细信息,同时专注于编辑器中的工作。 查找代码引用、对你的代码所做的更改、相关的 TFS 项以及单元测试 - 所有这些都无需脱离代码,查看别处。

在此版本中,我们已将 CodeLens“作者”指示器替换为新的“团队活动时间线”和“作者和更改”历史记录指示器。

  • “团队活动时间线”指示器显示最后一位作者,以及上次更改的时间。 选择此指示器将打开团队活动视图,可在其中查找代码更改中的模式。 这有助于评估更改随时间变化的影响。
  • “作者和更改”指示器显示已更改文件的作者数和更改数。 选择此指示器将打开所有更改、更改详细信息以及链接的列表,以获取详细信息,并查看以前的版本。

当代码托管在 Team Foundation 版本控制(Team Foundation Server 和 Visual Studio Online)和 Git 存储库中时,指示器中的所有信息都可用。 在 Team Foundation Server 或 Visual Studio Online 中工作时,还可以获取有关工作项的信息。

这些指示器以及早期版本中提供的指示器在 C# 和 Visual Basic 文件的代码元素(方法、字段或类)级别显示。 下面是 C# 文件的“团队活动时间线”指示器示例:

The Team Activity Timeline indicator for a C# file

下面是 C# 文件的“作者和更改”指示器示例:

The Authors and Changes indicator for a C# file

但是,指示器现在在所有其他类型的文件型(例如 C++、SQL、JavaScript 和其他类型的文件)的文件级别显示。 下面是非 C# 或 Visual Basic 代码文件的文件的“团队活动时间线”指示器示例:

The Team Activity Timeline indicator for a file that is not a C# or Visual Basic code file

体系结构、设计和建模

代码图和依赖项关系图

若要了解代码之间的特定依赖关系,可通过创建代码图使其可视化。 然后可以使用代码图(在代码旁边显示)导航这些关系。 代码图还可以在处理或调试代码时,帮助跟踪你在代码中的位置,这样一来,你将在读取更少代码的同时了解关于代码设计的更多信息。

在最终的 RTM 版本中,通过将命令组合为与选择、编辑、管理组和更改组内容的布局相关的部分,代码元素和链接的快捷菜单变得更加易于使用。 另请注意,测试项目的显示风格与其他项目不同,并且我们将代码图中的元素图标更新到了更合适的版本。

New groupings in code maps

我们还更改了显示代码元素内容的方式,因此现在可以选择多个组,并将布局样式应用到所有元素。 现在,在代码图上展开程序集、命名空间或类型时,始终可以获取有用的依赖项关系图。

Select multiple groups and apply one layout in a Code Map

在 2015 Visual Studio 的早期预览版和候选版本中,我们进行了更改,允许:

  • 获取改进的上下关系图。 对于中型到大型 Visual Studio 解决方案,现在可以使用简化的体系结构菜单来获取更有用的解决方案代码图。 解决方案的程序集按解决方案文件夹进行组合,因此可以在上下文中进行查看,并利用构建解决方案所付出的努力。 你将立即看到项目和程序集引用,然后会显示链接类型。 此外,解决方案外部的程序集以更紧凑的方式进行组合。
  • 更快速地获取反应式代码图。 拖放操作可以生成即时结果,且节点之间的链接可以更快速地进行创建,而不会影响后续由用户启动的操作,例如展开节点或请求更多节点。 具体而言,“跳过重新生成解决方案”选项可以在创建和编辑图表时获得更好的性能。 在不生成解决方案的情况下创建代码映射时,现在会处理所有极端情况,例如非生成程序集。
  • 筛选代码元素节点和组。 通过根据代码元素的类别显示或隐藏代码元素,以及通过按解决方案文件夹、程序集、命名空间、项目文件夹和类型对代码元素进行组合,可以快速整理代码图。
  • 筛选关系以使关系图更易于阅读。 这包括跨组链接,与早期版本相比,链接筛选让使用筛选器窗口工作时的干扰变少。
  • “深入了解依赖项链接”将筛选器考虑在内。 展开关系图以了解某个依赖项链接的贡献时,可以获得有用且清晰的关系图。 该关系图不那么杂乱,并将你选择的链接筛选选项考虑在内。
  • 根据类视图和对象浏览器创建关系图。 从类视图和对象浏览器窗口将文件和程序集拖放到新的代码图或现有代码图中。

总的来说,我们对代码图所做的改进的综合列表包括:

  • 测试项目的风格不一样且可以进行筛选。 现在可以在代码图中快速确定测试项目,因为它们的风格不一样。 此外,可以将测试项目筛选出来,以便你可以专注于处理应用程序的工作代码。
  • 代码元素与其上下文一起添加。 因为关系图现在与其上下文一起显示(最多到可以根据需要筛选出来的程序集和解决方案文件夹),所以从解决方案资源管理器、类视图和对象浏览器拖放代码元素时,或在解决方案资源管理器中选择元素并选择“在代码图上显示”时,可以获得更加有用的关系图。
  • 简化的外部依赖项链接。 依赖项链接不再表示来自 System.Object、System.ValueType、System.Enum 和 System.Delegate 的继承,这样一来,在代码图中查看外部依赖项变得更加方便。

此版本中其他设计和建模更改:

  • 层关系图。 使用类视图和对象浏览器更新这些关系图。 为满足软件设计要求,使用层关系图来描述软件所需的依赖项。 通过查找不满足这些约束条件的代码以及使用此基线验证未来的代码,使代码与此设计保持一致。
  • UML 关系图。 不再能够根据代码创建 UML 类图和序列图。 但你仍可使用新的 UML 元素创建这些图。
  • 体系结构资源管理器。 不再能够使用体系结构资源管理器创建关系图。 但你仍可使用解决方案资源管理器。

XAML 语言服务

我们在 .NET Compiler Platform(“Roslyn”)的基础上重新生成 XAML 语言服务,以便提供包括 IntelliSense 的快速、可靠和现代 XAML 编辑体验。

这使得 XAML 创作体验与 Visual Studio 中的其他一流语言相同。 我们还将围绕跨语言重构,以更快的节奏提供强大的功能集。

杂项

Visual Studio 2015 的代理不再需要测试控制器

在 Visual Studio 2015 的代理中,不需要单独的测试控制器,因为代理可以通过与 TFS 2015 或 Visual Studio Online 通信来处理业务流程。

在所有新的 Visual Studio 2015 和 TFS 2015 方案中,建议使用 Visual Studio 2015 代理。

但是,如果需要测试代理或测试控制器与 TFS 2013 配合使用,建议使用 Visual Studio 2013 Update 5 的代理,并配置测试控制器。

测试控制器与 TFS 2015 和 TFS 2013 兼容。 但是,Visual Studio 2015 中的负载测试支持不是代理的一部分,因此我们建议为 Visual Studio 2013 Update 5 安装代理,并配置控制器。

连接的服务

通过 Visual Studio 2015 中的新“添加连接服务”对话框,可以轻松地将应用程序连接到 Azure Application InsightsAzure 存储Azure 移动服务、Office 365 和 Salesforce。 若要添加连接服务,请右键单击“引用”节点,然后选择“添加连接服务...”

Add a Connected Service

“添加连接服务”对话框包含当前安装的所有连接服务提供程序,并提供一种方法来获取有关提供程序的详细信息、它使用的技术以及当前项目中是否受支持。 可以使用“查找更多服务...”链接在“扩展和更新”库中发现其他提供程序。 “添加连接服务”对话框也是可扩展的。 如果你是服务开发人员,则可以使用我们的连接服务 SDK 生成一个提供程序,以提高服务的可发现性和推动服务的使用情况。

企业单一登录

商业应用程序的常见任务是使用 Azure Active Directory 为企业单一登录配置应用程序。 现在可以通过右键单击应用程序并选择“配置 Azure AD 身份验证...”,在应用程序构造过程中随时轻松执行此操作。这将显示类似于“添加连接服务”体验的向导,指导你完成将应用程序配置为使用 Active Directory 的过程。 在向导中指定 Active Directory 域会将应用程序注册到该 Active Directory,并将应用程序配置为提示登录。

Specify an Active Directory Domain in the wizard

IIS 10 Express for Visual Studio 2015 RC

RC 版本包含新版本的 IIS 10 Express;其新功能包括对 HTTP 2.0 的支持,以及与 Windows 10 同步位。

其他更改:Bug 修复和已知问题

有关该版本中的技术改进、Bug 修复和已知问题的完整说明,请参阅以下知识库 (KB) 文章。

用于 .NET 的 Azure SDK 2.7

Azure SDK 2.7 是 Visual Studio 2015 的最终版本的第一个受支持的 Azure SDK。 下面是一些有助于改进 Azure 开发体验的新功能和更新:

  • Visual Studio 2015 的登录改进:适用于 Visual Studio 2015 的 Azure SDK 2.7 现在包括支持账户通过基于角色的访问控制、云解决方案提供商、DreamSpark 和其他帐户与订阅类型访问 Azure 的帐户。
  • 适用于 Visual Studio 2015 的 Cloud Explorer:Azure SDK 2.7 包括适用于 Visual Studio 2015 的云资源管理器,它提供了一种高性能、可缩放的工具,用于搜索和查看 Azure 资源、检查其属性,以及从Visual Studio 内执行关键开发人员和诊断操作。
  • Visual Studio 2015 中虚拟机的远程调试:使用 Azure 资源管理器堆栈创建的虚拟机上运行的远程调试进程。
  • Azure 资源管理器工具:我们更新了 Azure 资源管理器工具,以便更轻松地处理新的 Visual Studio Online 生成任务。 此外,我们还添加了对使用基于角色的访问控制 (RBAC) 和新订阅类型的改进。
  • Azure 应用服务工具:应用服务工具现已在 2015 Visual Studio 提供。 此更新为 Web 应用提供远程分析支持,改进 API 应用的 Swagger 生成以及支持多个帐户登录。 应用服务工具现在对所有功能使用 Azure 资源管理 API,并支持 DreamSpark 和云服务提供商。 我们还在此更新中添加了对 Visual Studio 2015 开发人员的 Azure API 应用预览版的支持。
  • HDInsight 工具:在此版本中,我们添加了针对 Tez 上运行的 Hive 作业的执行图视图,扩展了 Hive DML IntelliSense 支持,为 SCP.Net 添加了 NuGet,升级了 Storm 模板,并为 Pig 添加了新模板。
  • Azure 数据工厂工具:Azure SDK 中现在包括 Azure 数据工厂工具。 我们的目标是简化 Azure 数据工厂创作体验,并消除载入和部署挑战。 我们在 Azure 数据工厂工具中的定制体验和丰富的工具可提高新用户和高级用户的工作效率。 通过此版本,客户可以使用 Visual Studio 接口以交互方式创作和部署数据管道。 有关这些工具的详细信息,请参阅 Azure 数据工厂博客文章

Windows 10 SDK

此工具版本更新了 Visual Studio 2015,以提供为运行通用 Windows 平台的任何 Windows 设备生成、调试和提交应用所需的一切。 亮点包括:

  • 使用所选语言(C#、VB、C++ 或 JS)创建通用 Windows 应用,并将其部署到 Windows 10 设备。
  • 新的调试和诊断工具,包括适用于 XAML 应用的 UI 调试工具和网络探查器。
  • 创建应用包以提交到统一应用商店。
  • Windows 10 移动版仿真器现在利用电脑的图形硬件(GPU)使屏幕呈现速度更快。 它使用 Microsoft RemoteFx 提供更快、更响应的调试环境。
  • 现在可以在 Windows 10 移动版仿真器中使用 NFC 模拟功能来生成和测试已启用 NFC/邻近感应的通用应用。
  • 丰富的 XAML 设计器支持,用于创建专为设备定制的用户体验。
  • 云中 .NET 应用的 .NET 本机编译。

有关 Windows 10 开发人员工具的详细信息,请参阅是时候升级世界和应用了

针对 Visual Studio 2.2 的 Python 工具

Visual Studio 中完全免费的 Python 支持。

  • CPython、PyPy、IronPython 等
  • 详细的 IntelliSense
  • 交互式调试
  • 与 Visual Studio 功能集成
  • 免费且开源

有关详细信息,请参阅针对 Visual Studio 的 Python 工具

Visual Studio Tools for Unity 2.0

将 Visual Studio 变为强大的 Unity 开发环境。

  • 生成多平台游戏
  • 从 Visual Studio 调试
  • 在 Visual Studio 中创建 Unity 脚本
  • 使用 Visual Studio 体验增强的工作效率

有关 Visual Studio Tools for Unity 的详细信息,请参阅使用 Visual Studio 进行游戏开发

用于 Visual Studio 1.1 的 Node.js 工具 (RC)

更新时间:2021 年 10 月:

安全更新适用于 Apache Cordova 的 Node.js Visual Studio Tools

将 Visual Studio 变成强大的 Node.js 开发环境。

  • 免费且开源
  • 智能代码完成
  • 高级调试和分析
  • 与其他 Visual Studio 功能和第三方工具集成
  • Node.js、io.js、JavaScript、TypeScript、HTML、CSS 和 JSON 支持

详细了解针对 Visual Studio 的 Node.js 工具

Visual Studio 2015 的 Office 开发人员工具

使用 Office 365 API 进行开发

  • Office 365 API 工具使用 Visual Studio 2015 中的新连接服务,为开发人员提供将 Office 365 API 集成到项目中的引导体验。
  • 现在,只需在连接服务向导中选择“使用 Azure AD 配置单一登录”,即可让 Office 365 API 工具在 ASP.NET MVC Web 应用程序中自动配置单一登录。
  • 将 Office 365 API 集成到项目中时,Office 365 API 工具现在从 NuGet.org 下载并安装最新版本的 Office 365 API 客户端库 NuGet 包。

SharePoint 外接程序开发

  • 创建 SharePoint 外接程序时,这些工具会将目标 SharePoint 版本设置为在项目创建向导中指定的调试 SharePoint 网站的版本。 向导显示所选 SharePoint 版本,并允许重写该默认值。 在创建项目后,可以使用项目设计器中的 SharePoint 选项卡更改目标版本。
  • 当目标版本为 SharePoint Online 时,这些工具现在将包含 SharePoint Online 客户端对象模型(SPO-CSOM)的 NuGet 包安装到项目中。 这些工具向项目添加对 SharePoint Online CSOM 程序集的引用。 这些工具不再依赖于 Microsoft 下载中心发布的 SharePoint Online 客户端组件 SDK。 这样就可以更轻松地在将来使用 Visual Studio 中的 NuGet 包管理器升级 CSOM 程序集。
  • 现在,可以使用 Microsoft Azure 服务总线的 SAS 或 ACS 连接字符串来调试和排查 SharePoint 外接程序中的远程事件接收器问题

Office 加载项开发

  • 在此版本中,工具始终使用 v1.1 清单(而不是 v1.0)为 Office 创建新应用,以便应用可以支持 Office Web 应用和 Office 2013 客户端中的新功能。 对于使用 v1.0 清单的 Office 现有应用,当使用任何需要 v1.1 清单的新功能时,工具会将清单升级到 v1.1。

了解有关 Visual Studio 的 Office 开发人员工具的详细信息。

适用于 Visual Studio 2015 的 GitHub 扩展

在 Visual Studio 中连接到 GitHub 存储库的最简单方法。

  • 易于安装
  • 在 Visual Studio 中连接到 GitHub
  • 创建存储库
  • 单击克隆存储库
  • 将本地工作发布到 GitHub

详细了解适用于 Visual Studio 的 GitHub 扩展

基于云的负载测试

从全球范围的 Azure 数据中心进行基于云的负载测试

设置运行负载测试所需的基础结构变得更加轻松:现在可以从全球范围的任何受支持的 Azure 数据中心进行基于云的负载测试。

基于云的负载测试现在支持高级代理诊断

对于此版本,我们添加了对基于云的负载测试执行测试代理诊断的功能。

云中的调试很困难,因为计算机无法访问,因此,从测试代理收集日志或任何其他信息并不总是可能的。 但是,使用高级代理诊断可以从测试代理收集日志,并将它们附加到云负载测试结果。