2010-11-10 48 views
1

Comment puis-je construire Castle.Core, Castle.ActiveRecord et NHibernate pour permettre la confiance partielle? Il ya beaucoup de ressources sur le web montrant comment cela peut être fait, mais chaque site que j'ai trouvé dit utiliser nant build -D:assembly.allow-partially-trusted-callers=true pour construire chaque ensemble. Quand je regarde le Castle.Core trunk ici il n'y a pas de fichier *.Compiler Castle.ActiveRecord pour permettre une confiance partielle?

Comment cela peut-il être accompli? J'utilise .NET 3.5. Ce n'est pas une application web.

Edit: Nous utilisons NHibernate 2.1.2GA (dernière version stable, je crois). Le problème avec les instructions données ci-dessous est qu'il ressemble à leur référence à la construction Castle.Core et Castle.ActiveRecord de tronc. Trunk semble exiger NHibernate 3.0.0 qui ne correspond pas à notre version.

Solution

Presque tous mes réglages ont été effectués dans l'onglet Sécurité des propriétés du projet.

  • Sous la rubrique « Zone votre application sera installée à partir de: » label I sélectionné « (Personnalisé) »
  • En ce qui concerne les autorisations requises par l'application, je devais inclure SqlClientPermission ainsi que UIPermission. Afin d'annuler les problèmes pour le développement futur, j'ai sélectionné "Accorder des accès sans restriction à x" où est l'autorisation sélectionnée. Cela a été fait pour les deux autorisations indiquées ci-dessus. Notez que les autorisations que vous choisissez d'inclure seront appliquées par application et que deux cas ne seront pas identiques.
  • Sous le bouton « Avancé ... » J'UNSELECTED les deux options (« Debug cette application avec le jeu d'autorisations sélectionné » et « autoriser l'accès de l'application à son site d'origine »).

En outre, étant donné que l'application et SQL Server résident sous des domaines différents, j'ai dû définir ma chaîne de connexion pour inclure le domaine du serveur de base de données. Donc, ma source de données de chaîne de connexion d'origine devait passer de "Source de données = DB_SERVER" à "Source de données = DB_SERVER.DOMAIN".

Enfin, je devais mettre requirePermission="false" sur toutes mes sections de configuration. Mon configSections a fini comme ceci:

<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> 

Après tout a été dit et fait, j'ai pu avec succès de publier cette application sur un partage de fichiers à partir d'un autre domaine et ont les utilisateurs installent l'application sans problème. L'application de ces étapes à nos autres applications et l'utilisation de nos assemblys nouvellement compilés ont également fonctionné comme un charme.

+2

t ry les suggestions de ce fil: http://groups.google.com/group/castle-project-users/browse_thread/thread/90d8fbdcc2c363ae –

+0

@Mauricio, malheureusement ce lien cause toujours le même problème. – Mike

Répondre

5

Vous aurez besoin de MSBuild 4.0, les scripts de construction nant ont depuis longtemps disparu.

Si vous avez Visual Studio 2010, ouvrez le Visual Studio 2010 Invite de commande sinon assurez-vous d'utiliser MSBuild du .NET Framework 4.0.

vous avez Étant donné NHibernate construit pour APTCA (Nant -D: -D: assembly.allow-partiellement-confiance appelants = true fonctionne thre)

  • cd noyau

  • MSBuild buildscripts \ build.proj/p: AllowPartiallyTrustedCallers = true /p: configuration = NET35-RELEASE

  • Copie Castle.Core.dll à partir du dossier de construction à ActiveRecord \ lib \ net35

  • cd ActiveRecord

  • MSBuild scripts de constructions \ build.proj /p: AllowPartiallyTrustedCallers = true/p: = Configuration de sortie /p:FrameworkVersion=v3.5/p: BuildConfigKey = NET35

+0

Merci pour la réponse. De quelles versions de Core et ActiveRecord ai-je besoin? Nous utilisions la dernière version stable de AR (2.1.1). Semble que la dernière version stable de AR est 2.1.0 nécessite Core 1.2.0, qui n'inclut pas les scripts msbuild. Je suis maintenant en mesure de tout construire si je prends la version trunk de Core et AR, mais que AR v2.1.2 requiert NHibernate 3.0. Ou encore mieux, le tronc Core et AR est-il assez stable pour la production? – Mike

+0

Vous aurez besoin de Core 1.2.0 (la branche 1-2-stable sur Github) et cette version utilise NAnt (nant -D: assembly.allow-partiellement-trusted-callers = true). Pour ActiveRecord vous avez besoin de la branche 2-1-stable, qui utilisait aussi NAnt au lieu de MSBuild. – roelofb

+0

Nous utilisons des versions de tronc de Core et AR en production. La malle de Castle a toujours été très stable, au moins pour nous. – roelofb