As we are improving the F# ecosystem, the snippet project is created on codeplex web, so our development progress is visible to everyone. The F# code snippet project hosts the F# snippet file which can be consumed by the F# snippet addon. Feel free to follow and/or leave comments.
Thursday, July 19, 2012
Wednesday, July 11, 2012
I believe a beard well lathered is half shaved. If I have to do the type provider every now and often, I'd better get this process automated. I already have the code snippet support add basic building blocks for type provider class, but i still need to add the API files and often need to use Alt+Arrow Up/Down to adjust the file orders in the project.
I need to find a way to get this sorted out automatically. The Type Provider template is a solution. It can generate the basic project skeleton with API source file, test script, and the backbone type provider source code. The following screen shot shows how it works when add the package.
The type provider template will sync with the code in the F# 3.0 sample pack.
Tuesday, July 10, 2012
thanks to my co-worker, Vlad, i can solve the type provider type assembly resolve problem.
the code is below.
// tpc :TypeProviderConfig argument exposes enviroment-related information to the type provider
[< Microsoft.FSharp.Core.CompilerServices.TypeProvider >]
type TP(tpc : Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig) =
let handler = System.ResolveEventHandler(fun _ args ->
let asmName = AssemblyName(args.Name)
// assuming that we reference only dll files
let expectedName = asmName.Name + ".dll"
let expectedLocation =
// we expect to find this assembly near the dll with type provider
let d = IO.Path.GetDirectoryName(tpc.RuntimeAssembly)
if IO.File.Exists expectedLocation then Assembly.LoadFrom expectedLocation else null
do System.AppDomain.CurrentDomain.add_AssemblyResolve handler
interface System.IDisposable with
member this.Dispose() = System.AppDomain.CurrentDomain.remove_AssemblyResolve handler