当我使用 Visual Studio 2013 保存源代码时,是否可以 运行 StyleCop?
Is it possible to run StyleCop when I save source with Visual Studio2013?
当我使用 StyleCop 时,我总是做 run StyleCop
菜单或构建项目。
我想在程序保存后 运行 StyleCop。
可能吗?
不幸的是,宏已被删除,但编写加载项非常容易。首先创建一个新的 C# 加载项项目(完成后,您需要将 DLL 部署到 Visual Studio AddIns 文件夹并重新启动 VS)。
编辑生成的模板以附加到 DocumentSaved
事件:
private DocumentEvents _documentEvents;
public void OnConnection(object application,
ext_ConnectMode connectMode,
object addInInst,
ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
_documentEvents = _applicationObject.Events.DocumentEvents;
_documentEvents.DocumentSaved += DocumentEvents_DocumentSaved;
}
public void OnDisconnection(ext_DisconnectMode disconnectMode,
ref Array custom)
{
_documentEvents.DocumentSaved -= DocumentEvents_DocumentSaved;
}
您的 DocumentEvents_DocumentSaved
方法只需要调用正确的 VS 命令(请注意命令名称因您使用的 Visual Studio 版本而异)。
private void DocumentEvents_DocumentSaved(Document Document)
{
document.DTE.ExecuteCommand("Build.RunCodeAnalysisonSelection", "");
}
在这种情况下,您将 运行 仅对当前项目进行代码分析(假设它是您保存的内容,那么它也是您想要测试的内容)。此假设对全部保存无效,因此您可能需要使用 "Build.RunCodeAnalysisonSolution"
。当然还有很多 space 需要改进的地方(例如当多个 near 顺序保存发生时)。
如果您的目标是 VS 2013,那么您不应该 使用插件,因为它们已被弃用,取而代之的是包。你有同样的事情要做,但你通过 IVsRunningDocTableEvents
收到了通知。覆盖 Package
中的 Initialize()
(这将实现 IVsRunningDocTableEvents
接口)。从 IVsRunningDocumentTable
调用 AdviseRunningDocTableEvents()
(通过 GetService()
获取),你就完成了。
最后请注意,相同的技术也适用于任何其他事件(成功构建后、部署前、关闭解决方案时等)。
我参考了@Adriano Repetti 的回答VSAutoBuild
。
已发表在以下URL:
https://visualstudiogallery.msdn.microsoft.com/f0930864-0637-4fb3-a34a-155375aa85b3
和githubURL:
https://github.com/ko2ic/VSAutoBuild
当我使用 StyleCop 时,我总是做 run StyleCop
菜单或构建项目。
我想在程序保存后 运行 StyleCop。
可能吗?
不幸的是,宏已被删除,但编写加载项非常容易。首先创建一个新的 C# 加载项项目(完成后,您需要将 DLL 部署到 Visual Studio AddIns 文件夹并重新启动 VS)。
编辑生成的模板以附加到 DocumentSaved
事件:
private DocumentEvents _documentEvents;
public void OnConnection(object application,
ext_ConnectMode connectMode,
object addInInst,
ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
_documentEvents = _applicationObject.Events.DocumentEvents;
_documentEvents.DocumentSaved += DocumentEvents_DocumentSaved;
}
public void OnDisconnection(ext_DisconnectMode disconnectMode,
ref Array custom)
{
_documentEvents.DocumentSaved -= DocumentEvents_DocumentSaved;
}
您的 DocumentEvents_DocumentSaved
方法只需要调用正确的 VS 命令(请注意命令名称因您使用的 Visual Studio 版本而异)。
private void DocumentEvents_DocumentSaved(Document Document)
{
document.DTE.ExecuteCommand("Build.RunCodeAnalysisonSelection", "");
}
在这种情况下,您将 运行 仅对当前项目进行代码分析(假设它是您保存的内容,那么它也是您想要测试的内容)。此假设对全部保存无效,因此您可能需要使用 "Build.RunCodeAnalysisonSolution"
。当然还有很多 space 需要改进的地方(例如当多个 near 顺序保存发生时)。
如果您的目标是 VS 2013,那么您不应该 使用插件,因为它们已被弃用,取而代之的是包。你有同样的事情要做,但你通过 IVsRunningDocTableEvents
收到了通知。覆盖 Package
中的 Initialize()
(这将实现 IVsRunningDocTableEvents
接口)。从 IVsRunningDocumentTable
调用 AdviseRunningDocTableEvents()
(通过 GetService()
获取),你就完成了。
最后请注意,相同的技术也适用于任何其他事件(成功构建后、部署前、关闭解决方案时等)。
我参考了@Adriano Repetti 的回答VSAutoBuild
。
已发表在以下URL: https://visualstudiogallery.msdn.microsoft.com/f0930864-0637-4fb3-a34a-155375aa85b3
和githubURL: https://github.com/ko2ic/VSAutoBuild