Visual Studio 2010宏问题-完全停止工作

16

今天我在VS中编写了一个宏。在测试过程中,它运行得非常好。然后我尝试创建另一个宏,但不小心将其粘贴到了环境变量模块中。我删除了它并保存了,但现在我创建的所有宏都无法工作。我尝试了内置示例,例如插入日期,它可以工作,但是自定义的宏都不起作用。

谢谢, Ben


我也遇到了同样的问题,自定义宏无法工作 - 只有示例可以。你解决了吗? - BarrettJ
6个回答

26

不是要抢别人的风头,但由于我被认为是名声不佳的人,无法添加评论,因此我将此信息作为单独的答案添加。

David Coster在之前给出的(正确且非常有帮助的)答案中引用的页面已经更新,反映了卸载有问题的更新不再是必要的事情。您可以通过更改一些配置文件来重新启用宏,如下所述:

更新(2月18日):要在不删除Windows更新的情况下恢复Visual Studio 2010宏功能,您可以向vsmsvr10.exe.configvsaenv10.exe.configdevenv.exe.config文件中添加AllowDComReflection配置设置(注意,您需要以管理员权限运行编辑器才能正确修改这些文件):

<configuration>
    <runtime>
        <AllowDComReflection enabled="true"/>

在一台64位的Windows计算机上,这些文件的默认路径为:

"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"

这些文件已经有了运行时部分,你只需要添加一行代码。

访问引用页面获取完整信息。


2
该页面于2月25日进行了另一次更新(http://visualstudioextensions.vlasovstudio.com/2014/02/13/visual-studio-2010-macros-stop-working-after-february-2014-windows-update/)。对于Visual Studio 2010的建议解决方案对我很有效。 - ConnorsFan

19

更新:在2014年2月,微软发布了一次更新,导致Visual Studio产品中的宏(macros)失效。阅读下面的链接后,在我的Win 7 x64机器上卸载了KB2898869,它们又恢复正常了。

有关完整故事,请参见此链接

以下是该链接的一部分:

安装最近的2014年2月11日Windows更新后,Visual Studio 2010宏功能失效。宏不再运行且没有错误消息。更具体地说,MS14-009更新“.NET Framework中的漏洞可能会导致提权(2916607)”(评级重要)破坏了宏。更具体地说,这是此更新中的提权部分。

            .NET 4.5.1  .NET 4.5    .NET 4
Windows 8.1 KB2898871       
Windows 8   KB2898870   KB2898865   
Windows 7   KB2898869   KB2898864   KB2898855
Windows XP              KB2898855

哦,我还以为整天重新安装Windows是徒劳无功的。只需要删除那些KB即可。 - user1306322
疯了,我想知道他们何时/是否会提供更新KB2898869以解决这个问题。 - John
David,你的回答太棒了。谢谢你。这个答案必须被接受。 - Barış Akkurt
这解释了我们每个人在今年2月14日面临的问题。但要知道,这只是暂时的,原帖作者并没有因更新而遇到这个问题。旧的答案仍然适用于一般情况。 - Charles Roberto Canato

11

我有完全相同的问题。

结果证明是一个宏中的语法错误所导致的。


是的,那应该没问题。我认为你可以假设 OP 已经检查过了。 - Robert Harvey

7
要详细阐述@JZumwalt所说的,如果您的宏出现语法错误,即使其中一个宏有语法错误,Visual Studio / 宏IDE也会拒绝运行任何宏。
最简单的方法是转到“项目”->“我的宏属性”。在“生成”选项卡上,选中标记为默认情况下打开Option Strict的框。接下来,滚动查看每个模块/类,并寻找蓝色的波浪线。绝大部分都是无害的,比如“Option Strict禁止晚期绑定”和“Option Strict禁止从Foo到Bar的隐式转换”。
但是当您浏览时,您会发现那个阻止您运行宏的孤独语法错误。


0

这种情况曾经发生在我身上,问题出在整个模块底部多了一个 END SUB,与我原本认为有问题的宏毫无关系。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接