过完年回来,更新完系统补丁后。发下VS2010 中原先添加头注释的宏命令(Macros)不能使用。遂在网上寻找解决方法,功夫不负有心人,找到了这篇文章:http://visualstudioextensions.vlasovstudio.com/2014/02/13/visual-studio-2010-macros-stop-working-after-february-2014-windows-update/
原因: 2014 年 2 月 11 日 Windows 更新的安装,中断了 Visual Studio 2010 的宏功能。宏功能既不运行也不报错。更具体地说,它是重要更新 MS14-009 “ .NET Framework 中的漏洞可能允许特权提升 (2916607)” 中断了宏功能。更具体地说,它是次更新的特权提升部分。
解决方法如下:
方法一:卸载已经安装的系统更新补丁(如下图):
方法二:修改配置文件(针对64位)(修改文件如下):
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr10.exe.config" "C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv10.exe.config" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config"在配置文件的 <runtime> 后面添加 <AllowDComReflection enabled="true"/>即可(重启VS2010):
<configuration> <runtime> <AllowDComReflection enabled="true"/>
如果安装的是VS2008,则修改的文件为:
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config" "C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config" "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"
本人使用了第二种方法,成功解决问题。
后记:
二月二十五号, 微软发布 KB2934830"反射类型可能不工作通过 DCOM 安全公告 MS14 009″ 从安装安全更新后进行封送处理。此外,Microsoft Visual Studio 中的宏功能可能也无法按预期正常运行。
适用于 .NET Framework 的安全公告 MS14-009 将阻止反射类型的封送处理。阻止的类型包括以下几种以及由此派生的所有类型。
- System.Type
- System.Reflection.Assembly
- System.Reflection.MemberInfo
- System.Reflection.Module
- System.Reflection.MethodBody
- System.Reflection.ParameterInfo
- System.Reflection.TypeInfo
- System.Reflection.MethodInfo
- System.Reflection.FieldInfo
若要安全还原 Visual Studio 宏的功能,请根据系统中安装的 Visual Studio 版本更新以下应用程序配置文件之一。
最简单快捷的解决方法如下:
版本 | 文件夹 | 文件名 |
---|---|---|
Visual Studio 2005 Service Pack 1 (SP1) | \Program Files (x86)\Common Files\Microsoft Shared\VSA\8.0\VsaEnv | Vsmsvr.exe.config |
Visual Studio 2008 | \Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv | Vsmsvr.exe.config |
Visual Studio 2010 | \Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv | Vsmsvr10.exe.config |
注意 对于 32 位安装,路径位于 \Program Files\ 下。
对于所有受影响的 Visual Studio 版本,配置文件的修改过程均相同。您需要在 <runtime> 部分中添加 AllowDComReflection 开关,如下所示:
<AllowDComReflection enabled="1"/>
此更新会阻止反射类型离开托管代码,但未阻止它们进入托管代码。因此,在大多数情况下,您只需要在客户端设置配置开关。您应仅将此配置开关用于那些需要设置该开关的应用程序。