我是.NET學生,目前我們正在瞭解應用程序域。 我們得到了以下示例代碼(對於.NET 3.5)。正如所料,它會引發SecurityException。 注意:TestApp.exe作爲項目中的參考添加。.NET 4.0 AppDomain:已過時證據
Dim file As String = "TestApp.exe"
Dim hostEvidence As Object() = {New Zone(SecurityZone.Internet)}
Dim appDomainEvidence As Evidence = New Evidence(hostEvidence, Nothing)
Dim d As AppDomain = AppDomain.CreateDomain("MyDomain", appDomainEvidence)
d.ExecuteAssembly(file)
當試圖在VS2010下運行這個在.NET 4.0下我遇到了一個問題。 首先,它顯示一個警告
'的Public Sub New(hostEvidence()爲對象,assemblyEvidence()作爲對象)' 已過時:「這種構造是過時的。請使用帶有EvidenceBase數組的構造函數。'。
我將hostEvidence的類型更改爲EvidenceBase(),警告消失。 但是,當試圖運行應用程序時,它會給出錯誤。
此方法隱式使用CAS策略,該策略已被.NET Framework廢棄。爲了兼容性原因啓用CAS策略,請使用NetFx40_LegacySecurityPolicy配置開關。請參閱http://go.microsoft.com/fwlink/?LinkID=155570瞭解更多信息。
我已經查看的頁面,然後鏈接到如何:在沙箱中運行部分信任的代碼和讀取http://blogs.msdn.com/shawnfa/archive/2009/05/27/coding-with-security-policy-in-net-4-0-implicit-uses-of-cas-policy.aspx但我無法理解這一切。
與我目前的代碼相比,MSDN上的代碼示例相當大,因此任何有關更改我的代碼的幫助,以便它在不添加其他內容的情況下都能正常工作,我們將非常感激。
我意識到減少約爲3.5,但遷移的MSDN頁面在代碼中使用* SecurityZone.Internet *。我只是覺得它比我想要的要多,而且我沒有經驗去拿出我需要的零件。 – Stijn 2010-04-23 13:38:51
您的課程*可能*也適用於.NET 4.0,但您尚未提供足夠的信息來說明您的問題。 (並且可能不能)如果您在學習材料時繼續嘗試使用4.0 *,那麼隨着語言和框架的變化,您可能會冒更多令人討厭的驚喜。您仍然可以使用Visual Studio 2010,但您不應將其定位到4.0框架。 – 2010-04-23 14:03:05
公平點。感謝您的時間。 – Stijn 2010-04-23 14:04:24