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

После того, как все было сказано и сделано, я успешно смог опубликовать это приложение в общей папке из другого домена, и пользователи без проблем установили приложение. Применение этих шагов к другим нашим приложениям и использование наших недавно скомпилированных сборок также сработало как шарм.


person Mike    schedule 10.11.2010    source источник
comment
попробуйте предложения из этой темы: groups.google.com/group /castle-project-users/browse_thread/   -  person Mauricio Scheffer    schedule 10.11.2010
comment
@Mauricio, к сожалению, эта ссылка по-прежнему вызывает ту же проблему.   -  person Mike    schedule 11.11.2010


Ответы (1)


Вам понадобится MSBuild 4.0, скрипты сборки nant давно исчезли.

Если у вас есть Visual Studio 2010, откройте командную строку Visual Studio 2010, в противном случае убедитесь, что вы используете MSBuild из платформы .NET 4.0.

Учитывая, что у вас есть NHibernate, созданный для APTCA (nant -D:-D:assembly.allow-partially-trusted-callers=true работает)

  • компакт-диск ядро

  • MSBuild buildscripts\build.proj /p:AllowPartiallyTrustedCallers=true /p:Configuration=NET35-Release

  • Скопируйте Castle.Core.dll из папки сборки в ActiveRecord\lib\net35

  • компакт-диск ActiveRecord

  • MSBuild buildscripts\build.proj /p:AllowPartiallyTrustedCallers=true /p:Configuration=Release /p:FrameworkVersion=v3.5 /p:BuildConfigKey=NET35

person roelofb    schedule 11.11.2010
comment
Спасибо за ответ. Какие версии Core и ActiveRecord мне нужны? Использовали последнюю стабильную версию AR (2.1.1). Кажется, последняя стабильная версия AR 2.1.0 требует Core 1.2.0, который не включает сценарии msbuild. Теперь я могу успешно собрать все, если возьму основную версию Core и AR, но для AR v2.1.2 требуется NHibernate 3.0. Или, что еще лучше, достаточно ли стабилен Core и AR trunk для продакшена? - person Mike; 11.11.2010
comment
Вам понадобится Core 1.2.0 (стабильная ветка 1-2 на Github), и эта версия использует NAnt (nant -D:assembly.allow-partially-trusted-callers=true). Для ActiveRecord вам нужна ветка 2-1-stable, которая также использовала NAnt вместо MSBuild. - person roelofb; 12.11.2010
comment
Мы используем магистральные версии Core и AR в производстве. Багажник Касла всегда был очень устойчивым, по крайней мере, для нас. - person roelofb; 12.11.2010
comment
Большое тебе спасибо! После нескольких заминок мне удалось все запустить и запустить. Часть моей проблемы заключалась в настройке моего решения VS2008 для включения определенных функций безопасности. - person Mike; 12.11.2010
comment
См. также список рассылки пользователей замка, чтобы узнать, как Майку удалось наладить работу: groups.google.com/group/castle-project-users/browse_thread/ - person roelofb; 13.11.2010