如果我理解正确,则对于.NET Framework 4.0 here,SecurityAction.RequestMinimum已经过时。现在,当我创建一个面向.NET Framework 4.0的C ++ / CLR项目时,该行将自动添加到自动生成的AssemblyInfo.cpp中:
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
这个项目完美编译,但是我应该在C#.NETFX 4.0项目中编写C#等价物,它不会编译。你知道我在哪里可以找到有关这方面的信息吗?
答案 0 :(得分:2)
这不是新的,在以前版本的Visual Studio中添加了相同的属性。他们只是没有更改项目模板。它是一个CAS属性,基本上说“我至少需要运行非托管代码的最小权限”。
哪个合适,C ++ / CLI应用程序始终需要该权限。即使您编写纯代码,仍然需要非托管代码权限来初始化CRT。该权限仅适用于沙盒方案,其中代码不能以完全信任方式运行,例如在Web浏览器或安全插件设置中。 CAS确实已被弃用但未删除。不太清楚.NET 4.0现在发生了什么。这种情况与CAS被淘汰有关,这是无效的,因为像我这样的普通乔很难理解。
Shawn Farkas的博客是有关此信息的最佳来源。他是微软的.NET安全大师。
它的C#版本大致相同:
using System.Security.Permissions;
...
[assembly: SecurityPermission(SecurityAction.RequestMinimum, UnmanagedCode = true)]
不确定为什么需要它,C ++ / CLI程序集请求它就足够了。
答案 1 :(得分:1)
我怀疑这是因为IDE做出了“最佳猜测”,C ++ / CLI代码通常需要调用本机C ++代码。
我在(非常小的)C ++ / CLI VS2010 Express项目上将此设置更改为“false”,我的所有托管应用程序仍然运行正常。