Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法让代码分析忽略;“内部可视”吗;?_C#_Visual Studio 2012_Code Analysis_Internalsvisibleto - Fatal编程技术网

C# 有没有办法让代码分析忽略;“内部可视”吗;?

C# 有没有办法让代码分析忽略;“内部可视”吗;?,c#,visual-studio-2012,code-analysis,internalsvisibleto,C#,Visual Studio 2012,Code Analysis,Internalsvisibleto,我们有很多包含内部类的程序集,我们正在使用InternalsVisibleTo进行单元测试,以使内部类对单元测试程序集可见 这很好,但问题是,只要使用InternalsVisibleTo,它就会阻止代码分析CA1812警告(避免未实例化的内部类) 它还阻止CA1811:“避免未调用的私有代码” 我做了一些调查,发现了很多未使用的内部类,我们没有因此受到警告 目前我的解决方案是手工编辑每个程序集中的“AssemblyInfo.cs”文件,临时注释掉InternalsVisibleTo,这样我就可以

我们有很多包含内部类的程序集,我们正在使用
InternalsVisibleTo
进行单元测试,以使内部类对单元测试程序集可见

这很好,但问题是,只要使用
InternalsVisibleTo
,它就会阻止代码分析CA1812警告(避免未实例化的内部类)

它还阻止CA1811:“避免未调用的私有代码”

我做了一些调查,发现了很多未使用的内部类,我们没有因此受到警告

目前我的解决方案是手工编辑每个程序集中的“AssemblyInfo.cs”文件,临时注释掉
InternalsVisibleTo
,这样我就可以编译该项目并发现未使用的内部类

这是一个巨大的麻烦,当然,如果像这样的事情不能自动完成,它通常根本无法完成

解决方案是能够告诉代码分析忽略InternalsVisibleTo属性

有人知道这种可能性是否存在吗?

试试这个:

#ifdef CODE_ANALYSIS
#else
[InternalsVisibleTo(...)]
#endif

不要理会我的评论。我想我误解了你的问题。CA1812的MSDN文章特别提到了这一点。并提供了一个解决方法,使用FxCop代替。@HansPassant谢谢,但不幸的是,使用FxCop将是一个太大的改变。我们有530个程序集,我必须更改以使用FxCop:(嗯,不,更改程序集没有任何意义。创建FxCop项目不会花费你超过一分钟的时间,只需按住Shift键并单击程序集。听起来你没有做出任何实际努力。(我还添加了
它还阻止CA1811:“避免未调用的私有代码”。
到我的问题中)唉,这没有帮助-没有InternalsVisibleTo,单元测试项目就无法构建。这显然是正确的,但单元测试项目不必构建,您就可以在库上运行代码分析,是吗?现在我明白了。您可能有“在构建时启用代码分析”功能打开了,对吗?您可以关闭它并手动运行代码分析吗?请注意,无论如何,这是一个好主意,因为抑制代码分析警告的属性也以该常量为条件。我们有一个要求打开代码分析的签入策略,所以我们无法关闭它。但是,我可以创建一个生成配置设置另一个#define,我用它来控制它,这样我就可以选择适当的配置来运行代码分析,而不必编辑代码。我认为这是一个不错的解决方法,所以我将此标记为答案。