2010-10-19 54 views
2

如果我理解正確,那麼對於.NET Framework 4.0 here已經過時了SecurityAction.RequestMinimum。現在,當我創建面向.NET Framework 4.0中一個C++/CLR項目,這條線就會自動在自動生成的AssemblyInfo.cpp補充說:爲什麼在VS2010中創建C++/CLR項目時,AssemblyInfo中默認添加了SecurityAction.RequestMinimum?

[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; 

該項目完全編譯和一切,但我應該寫的在C#.NETFX 4.0項目中相當於C#,它不會編譯。你知道我在哪裏可以找到關於這方面的信息?

回答

1

我懷疑這是因爲IDE對C++/CLI代碼經常需要調用本機C++代碼進行「最佳猜測」。

我在(非常小的)C++/CLI VS2010 Express項目上將此設置更改爲'false',而我的全託管應用程序仍然正常運行。

2

這不是新的,在以前版本的Visual Studio中添加了相同的屬性。他們只是沒有改變項目模板。這是一個CAS屬性,基本上說「我需要至少最小的權限來運行非託管代碼」。

哪個是合適的,C++/CLI應用程序始終需要該權限。即使您編寫純代碼,仍需要非託管代碼權限來初始化CRT。該權限僅適用於代碼不以完全信任方式運行的沙盒解決方案,如在Web瀏覽器或安全插件設置中。 CAS確實已被棄用,但未被刪除。不太確定這些天在.NET 4.0中會發生什麼。中國科學院已經過時了,這是無效的,因爲像我這樣的普通喬很難理解。

Shawn Farkas的博客是有關此信息的最佳來源。他是微軟的.NET安全專家。

它的C#版本大同小異:

using System.Security.Permissions; 
... 
[assembly: SecurityPermission(SecurityAction.RequestMinimum, UnmanagedCode = true)] 

不知道爲什麼你會需要它,在C++/CLI裝配要求是不夠的。

相關問題