编译Castle.ActiveRecord以允许部分信任?

时间:2010-11-10 19:43:30

标签: nhibernate castle-activerecord castle partial-trust

如何构建Castle.Core,Castle.ActiveRecord和NHibernate以实现部分信任? Web上有大量资源显示如何完成此操作,但是我找到的每个站点都说使用nant build -D:assembly.allow-partially-trusted-callers=true来构建每个程序集。当我在这里查看Castle.Core trunk时,没有* .build文件。

如何实现这一目标?我使用的是.NET 3.5。这不是一个Web应用程序。

编辑:我们正在使用NHibernate 2.1.2GA(我相信最新的稳定版本)。下面给出的说明的问题是它们看起来像是指从trunk创建Castle.Core和Castle.ActiveRecord。 Trunk似乎要求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 个答案:

答案 0 :(得分:5)

你需要MSBuild 4.0 ,nant构建脚本早已不复存在。

如果您有Visual Studio 2010,请打开Visual Studio 2010命令提示符,否则请确保使用.NET 4.0框架中的MSBuild。

鉴于你已经为APTCA构建了NHibernate(nant -D:-D:assembly.allow-partially-trusted-callers = true works thre)

  • cd Core

  • MSBuild buildscripts \ build.proj / p:AllowPartiallyTrustedCallers = true / P:配置= NET35释

  • 将Castle.Core.dll从build文件夹复制到ActiveRecord \ lib \ net35

  • cd ActiveRecord

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