Help Gearing Up!

No, this isn’t a WoW thread, but it has the same feel.

I have decided to go ahead and try working some thing into my project and start using them, but there are some conflicts with version and such. I wish to build some thing on my own so I know everything is compiled against the same code bases. I am just not sure where to get everything, and how to do it.

The things I wish to compile and use are:

Castle Windsor / MicroKernel
MvcContrib
MvcContrib.Extras
FluentNHibernate

I know how and where to get the mvc stuff, so that isn’t a big deal. The other two are. I saw where Fluent is stored on github, but I don’t know what I need to grab it all. I didn’t see a source option for Castle at all. Maybe I just missed it. In any case, what other things might I need? I know some of these depend on Rhino mocks and some logging things. Does anybody have a good tutorial, or guide, on how to grab all these things and compile them? Of maybe this is your chance to actually write one!

Thanks in advance for any help.

LOL. Speak for yourself. Here in South Africa, internet and bandwidth is very expensive.

We pay about $60 a month for internet line of 384kb/s and can only download 3gb a month. After you reach your cap, internet stops working untill you top up. Oh yes, uploads and downloads contribute to your cap. So 3gb a month combined upload and download usage.

Sorry for all the posting, but I’m on a mission here…

I went and downloaded the SharpArch 1.0 rtm and just grabbed everything from there. Now I have no versioning issues, but I do have an oddity…

I have the following in my Global.asax:

            IWindsorContainer container = new WindsorContainer();
            
            ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));
            container.RegisterControllers(Assembly.GetExecutingAssembly());
            container.Register(
                Component.For<ICategoryService>().ImplementedBy<CategoryService>(),
                Component.For<ICategoryRepository>().ImplementedBy<CategoryRepository>(),
                Component.For<IDataContextFactory>().ImplementedBy<DataContextFactory>(),
                Component.For<IConnectionStringFactory>().ImplementedBy<ConnectionStringFactory>(),
                Component.For<IMappingSourceFactory>().ImplementedBy<MappingSourceFactory>()
                );

but when I run it, I get an error indicating that the requested controller has no default ctor. The error trace shows it’s still using the DefaultControllerFactory.

???

Well…things still aren’t working and I don’t know where to go next. Maybe, if dhtmlgod is still willing, a step through on how to download and compile all this manually is in order.

Nothing is making sense to me. I have the FluentNHibernate source package, and can compile it in VS just fine. The resulting bin dir has Castle components in it, however, that aren’t referenced in the project. So where are they coming from? How are they getting built?

I just want a simple IoC container library, and persistence engine, that consists of self-contained projects, and produce a single dll (or as few as possible) each. Like with StructureMap. There’s just the one resultant dll that does one thing: IoC-DI.

I can write my own ControllerFactory so I don’t really even need MvcContrib OR it’s Extras. Just Castle.Windsor and FluentNhibernate. I just can’t do it on my own.

I have a better idea, why not rip out your fingernails?!

Seriously, I’ve built that stack and more many times and helped out on an OSS project that built OSS projects from source and its not an enjoyable task, nor an easy one! I highly recommend using the official release, or builds from their CI server (not sure of the URL, will ask and post) or from hornget (http://hornget.net/packages/) which is the OSS I helped on…

If you insist…

Castle uses nant, get that installed. MvcContrib has moved back to Codeplex, so that’s either TFS, SVN or Mercurial (not sure how you spell it) and IIRC it use nant. Not sure about MvcContrib.Extras. FluentNHibernate is on github (install msysgit) and uses Rake, so you need to install Ruby.

Once you have all that installed, post and I’ll tell you the order :stuck_out_tongue:

I may have a simpler solution assuming somebody out there still has the zip files laying aorund. The latest binaries for MvcContrib, Extras, and FluentNHibernate all seem to play nicely together at this time. It’s castle that is messing up. It looks like I have the following in binary form.

MvcContrib.Castle
Built against:
Castle.Core 1.1.0.5754
Castle.Windsor 2.0.0.5754

Castle-Windsor
Versions:
Castle.Core 1.2.0.6633
Castle.Windsor 2.1.0.6633

It seems like I simply need an older version of Castle, but I only see the current branch at CastleProject.org, so what do I do? Compiling everything else against this one thing seems a bit impossible to do because some of the things I can’t get due to not having Subversion or lack of source code (Mvc Extras for example. I can’t find source for that anywhere!).

[We posted at near the same time!]

Well, thanks. I just found a file here:

http://builds.castleproject.org/viewLog.html?buildId=296&tab=artifacts&buildTypeId=bt3

but it’s revision 5821. Will VS balk at that since the other libraries are built against 5774? This is all getting WAY over my head. Too many libaries, too many dependancies, too many conflicts.

Bah! I’m an idiot! I just realised something. The MvcContrib, MvcContrib Extras, and FluentNHibernate latest build zip files all include folders with the external dll’s they were built against, all ready to go. I just grabbed it all from there. No conflicts.

I do however, have one more question if you don’t mind:

Are the related pdb’s (debug symbols) and xml files really required? Or can I slim my CommonComponents folder down to just the dll’s?

Thanks!

Not really required

I know that my english sucks… but I pointed you in that direction in another tread. :slight_smile:

So use castle dlls from the Extra Binaries or rebuild MvcContrib.Castle against 2.1.1 …

What about my minor version thing above? Say 1.1.0.1234 vs 1.1.0.1235? Will that cause runtime errors?

And pufa, I think it’s my reading comprehension that failed there, not you.

PDBs and XML is very useful. Bandwidth and disk space are cheap. Need I say more.