首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >装运装配件中的.NET [SuppressMessage]属性

装运装配件中的.NET [SuppressMessage]属性
EN

Stack Overflow用户
提问于 2008-12-03 18:01:26
回答 3查看 2.3K关注 0票数 8

我想知道人们(指公司/开发人员)是否真的关心在发布程序集中放置SuppressMessage属性。

在项目文件中创建单独的配置,在发布模式下包含CODE_ANALYSIS,然后在最终构建中将其取消,这对我来说似乎是一种可以避免的开销。

如果不希望这些保留在最终的程序集中,但仍然希望在代码中使用它们,那么最好的策略是什么?将它们存储在FxCop项目文件中有什么优点/缺点吗?

我来自VS2008 Pro+FxCop 1.36,而不是VS2008 Team System

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-03 18:27:37

从大局来看,我不认为这真的很重要。因为这是一个属性(有效的元数据),所以它不会影响代码性能。也就是说,请记住,属性中的信息对于任何使用disassember的人都是可用的,比如Reflector。

将它们存储在FxCop项目文件中的问题是,您必须确保每个人都使用相同的项目文件,并且项目文件始终随项目一起传递(它已签入到源代码管理,这意味着您必须在每次运行FxCop时将其签出)。

如果您不想在生产代码中使用SuppressMessage属性,那么您只需要在运行FxCop的构建中定义CODE_ANALYSIS符号。这意味着要么在您的Debug配置中定义它,要么添加其他配置。只有在定义了符号后,才会将属性编译到代码中。

从自动/夜间构建的角度来看,您可以使用定义了符号的配置进行构建,然后构建没有符号的生产版本,或者执行两个构建-一个定义了符号,运行FxCop来获取违规信息,然后另一个构建没有定义符号。

票数 3
EN

Stack Overflow用户

发布于 2008-12-03 18:23:17

只有在编译过程中存在CODE_ANALYSIS预处理器定义时,才会将SuppressMessage属性添加到代码中。您可以通过查看Reflector.exe中的属性定义来验证这一点。默认情况下,这不是在版本中定义的,所以它不会影响生产代码。

通常,我只在定义了CODE_ANALYSIS的程序集的调试版本上运行FxCop。

票数 7
EN

Stack Overflow用户

发布于 2008-12-03 18:07:00

我们有一大堆的生产代码,我们并不特别关心。它不会影响perf,而且在一个类中有一些看起来很粗糙的属性通常会促使你在可能的情况下删除它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/338112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档