.net 为什么即使设置了代码分析编译符号,某些SuppressMessage属性仍然保留?
我正在浏览实体框架的代码 我注意到EntityFramework5的生产dll中仍然有一些SuppressMessage属性 尽管该项目显然是使用CODE_ANALYSIS编译符号(如果您查看开源项目)构建的,以删除SuppressMessage属性,但在某些情况下它仍然存在 这不只是增加了dll的大小(我知道这不会影响运行时性能,因为它只是元数据),但为什么只解析出一些?有数千个未在生产DLL中结束 此外,我还反编译了从NuGet获得的版本,以确保我没有使用错误的设置构建项目.net 为什么即使设置了代码分析编译符号,某些SuppressMessage属性仍然保留?,.net,visual-studio,attributes,suppressmessage,.net,Visual Studio,Attributes,Suppressmessage,我正在浏览实体框架的代码 我注意到EntityFramework5的生产dll中仍然有一些SuppressMessage属性 尽管该项目显然是使用CODE_ANALYSIS编译符号(如果您查看开源项目)构建的,以删除SuppressMessage属性,但在某些情况下它仍然存在 这不只是增加了dll的大小(我知道这不会影响运行时性能,因为它只是元数据),但为什么只解析出一些?有数千个未在生产DLL中结束 此外,我还反编译了从NuGet获得的版本,以确保我没有使用错误的设置构建项目 我以EF代码库
我以EF代码库为例,因为我甚至不能让代码分析编译符号删除我自己的suppressmessages,即使在我的系统上编译发布时测试,
SuppressMessage
属性被发送到il中,如果您使用代码分析
编译符号集进行编译。如果代码中有属性,但没有编译符号,则不会发出该属性。这很有趣。我认为情况正好相反;我的错误。仍然不能解释EF项目中的巨大差异。如果您快速查看一下,它在DLL中有2000多个抑制项,而在实际生产程序集中只有零星的几个。我只是想知道这是怎么发生的。