Компилирование Castle.ActiveRecord, чтобы разрешить частичное доверие?
Как я могу построить Castle.Core, Castle.ActiveRecord и NHibernate для частичного доверия? В Интернете есть много ресурсов, показывающих, как это можно сделать, однако каждый найденный сайт говорит, что нужно использовать nant build -D:assembly.allow-partially-trusted-callers=true
построить каждую сборку. Когда я смотрю на ствол Castle.Core, здесь нет файла *.build.
Как это можно сделать? Я использую.NET 3.5 . Это не веб-приложение.
Редактировать: Мы используем NHibernate 2.1.2GA (последняя стабильная версия, я считаю). Проблема с инструкциями, приведенными ниже, заключается в том, что они выглядят так, как будто они ссылаются на создание Castle.Core и Castle.ActiveRecord из транка. Для магистрали требуется NHibernate 3.0.0, который не соответствует нашей версии.
Решение
Почти все мои настройки были сделаны на вкладке "Безопасность" в свойствах проекта.
- В разделе "Зона, из которой будет установлено ваше приложение:" выбранный ярлык "(Пользовательский)"
- Что касается разрешений, требуемых приложением, мне пришлось включить SqlClientPermission, а также UIPermission. Чтобы устранить проблемы для дальнейшего развития, я выбрал "Предоставить сборкам неограниченный доступ к x", где выбрано разрешение. Это было сделано для обоих разрешений, показанных выше. Обратите внимание, что разрешения, которые вы выбираете, будут включены для каждого приложения, и никакие два случая не будут одинаковыми.
- Под кнопкой "Дополнительно..." я отменил выбор обеих опций ("Отладить это приложение с выбранным набором разрешений" и "Предоставить приложению доступ к сайту его происхождения").
Кроме того, поскольку приложение и SQL Server находятся в разных доменах, мне пришлось настроить строку подключения так, чтобы она включала домен сервера базы данных. Поэтому мой исходный источник данных строки подключения должен был перейти от "Data Source=DB_SERVER" к "Data Source=DB_SERVER.DOMAIN".
Наконец, я должен был установить requirePermission="false"
на всех моих разделах конфигурации. мой configSections
закончилось так:
<configSections>
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" requirePermission="false"/>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" requirePermission="false"/>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
<section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
</configSections>
После того, как все было сказано и сделано, я смог успешно опубликовать это приложение на общем файловом ресурсе из другого домена, и пользователи установили приложение без проблем. Применение этих шагов к другим нашим приложениям и использование наших недавно скомпилированных сборок также работало как очарование.
1 ответ
Вам понадобится MSBuild 4.0, давно уже не было скриптов сборки nant.
Если у вас Visual Studio 2010, откройте командную строку Visual Studio 2010, в противном случае убедитесь, что вы используете MSBuild из среды.NET 4.0.
Учитывая, что у вас есть NHibernate, созданный для APTCA (nant -D:-D:assembly.allow-частично-trust-callers=true работает там)
CD Core
MSBuild buildscripts \ build.proj / p: AllowPartiallyTrustedCallers = true / p: Конфигурация =NET35-Release
Скопируйте Castle.Core.dll из папки сборки в ActiveRecord \ lib \ net35
cd ActiveRecord
MSBuild buildscripts \ build.proj / p: AllowPartiallyTrustedCallers = true / p: Конфигурация = Выпуск /p:FrameworkVersion=v3.5 /p:BuildConfigKey=NET35