使用Visual Studio,创建一个新的空项目
- 在解决方案资源管理器 ,右键单击该项目,然后选择属性
- 在项目属性窗口中,选择选项卡代码分析
- 在代码分析选项卡,选择适合你开放团队的规则
- 在解决方案资源管理器 ,右键单击该项目,然后选择卸载项目 ,回答是任何提示保存更改
- 在解决方案资源管理器 ,右键单击该项目,然后选择编辑
- 搜寻<CodeAnalysisRules>元素和它的内复制文本
- 创建一个空的文本文件名为[team].CodeAnalysis.Rules.targets,用你项目的名称取代[team]
- 在文本文件中输入以下,取代[rulesettings]与上述步骤6复制的文本:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CodeAnalysisRules>$(CodeAnalysisRules);[rulesettings]</CodeAnalysisRules>
</PropertyGroup>
</Project>
- 使用Visual Studio中,打开你的项目
- 在解决方案资源管理器 ,右键单击一个项目,然后选择卸载项目
- 在解决方案资源管理器 ,右键单击卸载项目,然后选择编辑
- 添加以下<Import>元素项目,取代[path]与文件的创建上述目标的路径。 这需要在离</project>最近的最后一行,以确保在项目设置不重写队设置:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
[...]
<Import Project="[path]" />
</Project>
- 重复的步骤,每个项目要共享的规则设置11
其实也可以通过源代码管理工具签入签出工程项目文件实现规则共享,codeAnalysis的规则都保存在项目文件中。
在一个方法或类上排出某个规则或几个规则
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", MessageId = "Member")]
protected virtual void DataPortal_Fetch(object criteria)
{
throw new NotSupportedException(Resources.FetchNotSupportedException);
}
附:其实还可以在一个工程项目中建一个文件,写下:
//------------------------------------------------------------
//CodeAnalysis 豁免规则
//------------------------------------------------------------
Assemblies should have valid string names
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
//Mark assemblies with CLSCompliantAttribute
//[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1014:MarkAssembliesWithClsCompliant")]
/*
[assembly:
SuppressMessage(
"Microsoft.Globalization", "CA1304:SpecifyCultureInfo",
Scope = "member|type|namespace",
Target = "...|....|"
)]
System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
public PartCreator(Func<PartLifetimeContext<T>> creator, TMetadata metadata)
: base(creator)
{
this._metadata = metadata;
}
*/
都一样效果