Домен приложения .NET 4.0: устаревшее доказательство - PullRequest
1 голос
/ 23 апреля 2010

Я студент .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)

При попытке запустить это в VS2010 под .NET 4.0 я столкнулся с проблемой.Сначала отображается предупреждение

«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 довольно большой по сравнению с тем, что у меня есть в настоящее время, поэтому любая помощь по изменению моего кода, чтобы он работал без добавления другихвещи, будут очень цениться.

1 Ответ

3 голосов
/ 23 апреля 2010

Как сказано в предоставленной вами ссылке, .NET больше не поддерживает часть политики инфраструктуры безопасности доступа к коду, начиная с версии 4.0.

Другими словами, ваш урок посвящен .NET 3.5и не относится к платформе 4.0.Решение состоит в том, чтобы вернуться к исходному коду и настроить свой проект для целевой платформы 3.5 (вы все еще можете использовать Visual Studio 2010).

.

...