Компиляция кода со средним доверием

Вместе с Беном (@BuildStarted) мы создали проект RazorEngine , который позволяет компилировать и анализировать произвольные шаблоны вне ASP.NET MVC. У проекта уже было несколько релизов, и отзывы были отличными (спасибо всем!). Но мы столкнулись с проблемой: среднее доверие.

Поскольку мы используем CSharpCodeProvider для компиляции классов, сгенерированных Razor (для загрузки в текущий домен приложения для выполнения), мы сталкиваемся с SecurityException при попытке вызвать его из-за наложенного на него LinkDemand. . Когда обычная страница ASP.NET компилируется (независимо от уровня доверия), это делается с помощью BuildProvider , который обычно используется GAC, и, таким образом, неявно получает соответствующие разрешения для компиляции. Следовательно, ASP.NET WebForms стандартно работает со средним доверием.

В нашем коде нет, и нам нужно нацеливаться на сценарии, в которых наша встроенная библиотека не будет развернута в GAC и работает со средним доверием. Поэтому мы рассматривали возможность создания BuildProvider специально для него и переноса компиляции в систему сборки ASP.NET, но это кажется слишком сложным и несвязным, а сам провайдер требует как сопоставления через расширение файла, так и виртуального путь (который может разрешаться или не разрешаться в физический файл - подумайте о VirtualPathProvider ). Все это кажется излишним, просто для того, чтобы проект работал со средним доверием; не только это, но и исключительно для проектов ASP.NET, поскольку наш движок также работает вне ASP.NET

Итак, мой вопрос заключается в следующем: знает ли кто-нибудь о каких-либо методах или технологиях для компиляции кода C # в среде со средним уровнем доверия?

]Заранее спасибо.

9
задан marcind 18 January 2011 в 23:43
поделиться