Visual studio 2012 使用SecuritySafeCritical从VS2012中的代码分析中避免CA2122失败 我这里有一个C++与CLI解决方案,它不与本地C++混合(尽管我们也有这种类型)。它包括三个项目,其中两个与我的问题相关
第一个是静态库(.lib),处理Acitve目录问题。Visual studio 2012 使用SecuritySafeCritical从VS2012中的代码分析中避免CA2122失败 我这里有一个C++与CLI解决方案,它不与本地C++混合(尽管我们也有这种类型)。它包括三个项目,其中两个与我的问题相关,visual-studio-2012,.net-4.0,c++-cli,code-access-security,Visual Studio 2012,.net 4.0,C++ Cli,Code Access Security,第一个是静态库(.lib),处理Acitve目录问题。 第二个是可执行的主项目(.exe),它依赖于其他项目 我是Visual Studio 2012的新手,希望利用代码分析等工具的优势。在解决方案上运行代码分析会显示几个CA2122警告: CA2122不间接公开具有链接需求的方法 我理解与此警告相关的安全问题,我想我理解如何处理它,尽管我对这类安全问题也不熟悉。当检查整个解决方案时,这些警告与Active Directory代码有关,而仅检查lib项目时,它们不会出现,而且一切似乎都正常 现在
第二个是可执行的主项目(.exe),它依赖于其他项目 我是Visual Studio 2012的新手,希望利用代码分析等工具的优势。在解决方案上运行代码分析会显示几个CA2122警告: CA2122不间接公开具有链接需求的方法 我理解与此警告相关的安全问题,我想我理解如何处理它,尽管我对这类安全问题也不熟悉。当检查整个解决方案时,这些警告与Active Directory代码有关,而仅检查lib项目时,它们不会出现,而且一切似乎都正常 现在谈谈问题的核心:
SecuritySafeCritical
属性标记所有被警告的方法-->没有更改,警告相同
SecurityCritical
,并将SecuritySafeCritical
添加到有问题的方法中。这将不起作用,因为添加一个将程序集标记为SecurityCritical
的AssemblyInfo.cpp
不会影响此问题。(我知道*.cpp在托管静态库中似乎已经过时,因为头文件中的代码似乎必须完整,这使得此类项目过时……但我们不希望每个小部分都有.dll,我们还希望将这些内容封装在自己的项目中,而不是有一些松散的头文件或与之混合(其他区域)SecurityTransparent
,因为到目前为止,我了解到SecuritySafeCritical
标记的代码可以被SecurityTransparent
或SecurityCritical
代码调用(对我来说,每种安全都适用)。-->My asSecuritySafeCritical
标记的方法现在用CA2141警告标记,许多其他方法产生新的警告(其中大多数与异常处理有关):
CA2141:透明方法不能满足链接需求CA2140:透明代码不得引用安全关键项
SecurityCritical
。-->我的
SecuritySafeCritical
方法最终不会产生任何警告,但仍然存在来自具有exceptionhandling的方法的所有其他警告我寻找了一个解决方案,但在这种情况下没有找到任何有用的方法。此外,关于这个主题的信息很少,过时(因为与.Net Framework 2.0相关,而整个安全问题似乎在.Net Framework 4.0中发生了巨大变化),或者对我来说很难理解。所以我希望有人知道我可以尝试什么或者我应该做什么