如何在我的c#项目中找到所有静态变量
本文关键字:静态 变量 我的 项目 | 更新日期: 2023-09-27 18:24:17
我想与多个线程并行运行我的命令行程序的某些部分,我担心可能还有一些静态变量需要修复(例如,使其成为[ThreadStatic]
)。有什么工具或简单的方法可以在我的项目中找到这些吗?
当然,简单地搜索"static"
并没有多大帮助:我有很多静态方法,它们工作得很好,可以找到任意数量的线程
注意:dasblinkenlight的答案仅适用于Visual Studio 2010及更早版本
以下是Visual Studio 2012及更新版本的翻译:
static(?([^'r'n])'s)+('b(_'w+|['w-[0-9_]]'w*)'b)(?([^'r'n])'s)+('b(_'w+|['w-[0-9_]]'w*)'b)(?([^'r'n])'s)*[=;]
翻译参考:http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
在Visual Studio中使用regexp选项在文件中搜索static:b+:i:b+:i:b*[=;]
应该会为您找到静态变量。它还将带来运算符==
,但它们应该相对容易在视觉上过滤掉。
首先,您必须从Edit->Find and Replace->Find in Files
菜单或Ctrl+Shift+F快捷键打开Find in Files
窗口。
然后,您必须使用此正则表达式在Current Project
或Entire Solution
:中搜索所有静态变量
static 'w*[ 't]*'b('w+|['w-[0-9]]'w)'b[ 't]+'b('w+|['w-[0-9]]'w*)'b[ 't]*[=;]
请注意检查Find options
部分中的选项Use Regular Expressions
。
此正则表达式还支持只读、虚拟、。。。
除了IDE技巧之外,真正的战士的方法是使用Assembly.Load()
将应用程序DLL加载到内存中,然后使用反射搜索所有类型的公共/私有/受保护静态字段。:)
在一个地方找到所有静态字段的最简单方法可能是通过Visual Studio中的"类视图"面板(默认情况下,在C#模式下为Ctrl + W, C
,也在View
菜单下)。
您可以设置一些基本过滤器。不幸的是,静态不是其中之一。但是,您可以根据您的编码风格,使用可用的过滤器来精简结果。
或者,您可以制作一个程序,使用反射来提取每个静态字段并检查其属性。如果ThreadStaticAttribute
不在其中,让它吐出一条消息。(这是另一个答案,您可能可以从中获得更多详细信息。)