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
Visual studio 2012 使用SecuritySafeCritical从VS2012中的代码分析中避免CA2122失败 我这里有一个C++与CLI解决方案,它不与本地C++混合(尽管我们也有这种类型)。它包括三个项目,其中两个与我的问题相关_Visual Studio 2012_.net 4.0_C++ Cli_Code Access Security - Fatal编程技术网

Visual studio 2012 使用SecuritySafeCritical从VS2012中的代码分析中避免CA2122失败 我这里有一个C++与CLI解决方案,它不与本地C++混合(尽管我们也有这种类型)。它包括三个项目,其中两个与我的问题相关

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项目时,它们不会出现,而且一切似乎都正常 现在

第一个是静态库(.lib),处理Acitve目录问题。
第二个是可执行的主项目(.exe),它依赖于其他项目

我是Visual Studio 2012的新手,希望利用代码分析等工具的优势。在解决方案上运行代码分析会显示几个CA2122警告:

CA2122不间接公开具有链接需求的方法

我理解与此警告相关的安全问题,我想我理解如何处理它,尽管我对这类安全问题也不熟悉。当检查整个解决方案时,这些警告与Active Directory代码有关,而仅检查lib项目时,它们不会出现,而且一切似乎都正常

现在谈谈问题的核心:

  • 我尝试用
    SecuritySafeCritical
    属性标记所有被警告的方法
    -->没有更改,警告相同
  • 我在另一个项目中解决了这个警告,将整个程序集标记为
    SecurityCritical
    ,并将
    SecuritySafeCritical
    添加到有问题的方法中。这将不起作用,因为添加一个将程序集标记为
    SecurityCritical
    AssemblyInfo.cpp
    不会影响此问题。(我知道*.cpp在托管静态库中似乎已经过时,因为头文件中的代码似乎必须完整,这使得此类项目过时……但我们不希望每个小部分都有.dll,我们还希望将这些内容封装在自己的项目中,而不是有一些松散的头文件或与之混合(其他区域)
  • 之后,我尝试将主项目的整个程序集标记为
    SecurityTransparent
    ,因为到目前为止,我了解到
    SecuritySafeCritical
    标记的代码可以被
    SecurityTransparent
    SecurityCritical
    代码调用(对我来说,每种安全都适用)。-->My as
    SecuritySafeCritical
    标记的方法现在用CA2141警告标记,许多其他方法产生新的警告(其中大多数与异常处理有关):

    CA2141:透明方法不能满足链接需求
    CA2140:透明代码不得引用安全关键项
  • 因此,我决定尝试将此程序集也标记为
    SecurityCritical

    -->我的
    SecuritySafeCritical
    方法最终不会产生任何警告,但仍然存在来自具有exceptionhandling的方法的所有其他警告
  • 所以我不知道如何解决这个问题。我假设有一个托管的静态库是问题所在,当只有一个dll项目时,也许我可以解决2中提到的问题,但我希望避免与我们的程序共享另一个*.dll项目。
    我寻找了一个解决方案,但在这种情况下没有找到任何有用的方法。此外,关于这个主题的信息很少,过时(因为与.Net Framework 2.0相关,而整个安全问题似乎在.Net Framework 4.0中发生了巨大变化),或者对我来说很难理解。所以我希望有人知道我可以尝试什么或者我应该做什么