2010-11-10 5 views
1

Как я могу построить Castle.Core, Castle.ActiveRecord и NHibernate, чтобы позволить частичное доверие? В Интернете есть много ресурсов, показывающих, как это можно сделать, однако каждый найденный мной сайт говорит, чтобы использовать nant build -D:assembly.allow-partially-trusted-callers=true для сборки каждой сборки. Когда я смотрю на Castle.Core trunk здесь нет файла * .build.Компиляция Castle.ActiveRecord для частичного доверия?

Как это можно сделать? Я использую .NET 3.5. Это не веб-приложение.

Редактировать: Мы используем NHibernate 2.1.2GA (как я считаю, последняя стабильная версия). Проблема с приведенными ниже инструкциями заключается в том, что похоже, что они ссылаются на строительство Castle.Core и Castle.ActiveRecord из багажника. Кажется, что соединительная линия требует NHibernate 3.0.0, которая не соответствует нашей версии.

Решение

Почти все мои хитрости были сделаны на вкладке Security в свойствах проекта.

  • Под «Зона приложения будет установлена ​​с:» ярлыком я выбрал «(Custom)»
  • Что касается разрешений, требуемых приложением, я должен был включать в себя SqlClientPermission, а также UIPermission. Чтобы свести на нет проблемы для будущего развития, я выбрал «Grant assembly неограниченный доступ к 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> 

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

+2

т ry предложения из этой темы: http://groups.google.com/group/castle-project-users/browse_thread/thread/90d8fbdcc2c363ae –

+0

@Mauricio, к сожалению, эта ссылка по-прежнему вызывает ту же проблему. – Mike

ответ

5

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

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

Учитывая у вас есть NHibernate построен для APTCA (Нан -D: -D: assembly.allow-частично доверенного-звонящие = истина работает Тр)

  • кд Ядро

  • MSBuild buildscripts \ сборки.проектируемый/р: AllowPartiallyTrustedCallers = истина /р: Конфигурация = NET35-релиз

  • Copy Castle.Core.dll из папки сборки в ActiveRecord \ Lib \ net35

  • кд ActiveRecord

  • MSBuild buildscripts \ build.proj /р: AllowPartiallyTrustedCallers = истина/р: Configuration = Release /p:FrameworkVersion=v3.5/р: BuildConfigKey = NET35

+0

Спасибо за ответ. Какие версии 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 достаточно стабильны для производства? – Mike

+0

Вам понадобится Core 1.2.0 (1-2-стабильная ветвь на Github), и эта версия использует NAnt (nant -D: assembly.allow-частично-trusted-callers = true). Для ActiveRecord вам понадобится 2-1-стабильная ветка, которая также использовала NAnt вместо MSBuild. – roelofb

+0

Мы используем магистральные версии Core и AR на производстве. Сундук замка всегда был очень стабильным, по крайней мере для нас. – roelofb