我是.NET学生,目前我们正在学习应用程序域。 我们获得了以下示例代码(适用于.NET 3.5)。正如所料,它抛出SecurityException。 注意:TestApp.exe已添加为项目中的参考。
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)
在.NET 4.0下尝试在VS2010中运行时遇到问题。 首先它显示警告
'Public Sub New(hostEvidence()As Object,assemblyEvidence()As Object)'已过时:'此构造函数已过时。请使用带有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上的代码示例与我目前的代码示例相比非常大,因此任何有关更改我的代码以便在不添加其他内容的情况下工作的帮助都将非常感激。
答案 0 :(得分:3)
正如您在提供的链接中所说,从版本4.0开始,.NET不再支持代码访问安全框架的策略部分。
换句话说,您的课程是关于.NET 3.5,与4.0框架无关。解决方案是恢复原始代码和configure your project to target the 3.5 framework(您仍然可以使用Visual Studio 2010)。