F#で作成したDLLにアセンブリ情報を付与する、というお話
F# Advent Calendar jp 2010
このエントリはF# Advent Calendar jp 2010 : ATNDの第10回のものです。
アセンブリ情報
F#でビルドしたDLLのプロパティを見ると、大抵は以下のように「詳細」は空白がちになっていると思います。
これらはアセンブリ情報などと呼ばれる物で、製品として出荷する場合は必須なものです。
例えば、C#なんかでは以下のようにIDEから設定(プロジェクトの「プロパティ」→「アプリケーション」→「アセンブリ情報(I)...」)できるのですが、
F#のIDEには残念ながらアセンブリ情報を設定できる機能は、まだ実装されていません。
もちろん、C#のアセンブリ情報は、AssemblyInfo.csという名前のファイルに記述されていますので、このファイルに値するものを設定すればよいのです。
しかし、F#のプロジェクト開始時には、AssemblyInfo.fs なんてありません。作りましょう。
名前はC#のものを踏襲して、AssemblyInfo.fs とでもしておきましょう。
以下が、AssemblyInfo.fs の全文です。
module AssemblyInfo #light open System.Reflection open System.Runtime.CompilerServices open System.Runtime.InteropServices (* アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 アセンブリに関連付けられている情報を変更するには、 これらの属性値を変更してください。 *) [<assembly: AssemblyTitle("Library1")>] [<assembly: AssemblyDescription("")>] [<assembly: AssemblyConfiguration("")>] [<assembly: AssemblyCompany("")>] [<assembly: AssemblyProduct("Library1")>] [<assembly: AssemblyCopyright("Copyright")>] [<assembly: AssemblyTrademark("")>] [<assembly: AssemblyCulture("")>] (* ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 その型の ComVisible 属性を true に設定してください。*) [<assembly: ComVisible(false)>] (* 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です *) [<assembly: Guid("7348f737-981a-43dc-924f-6d6e7eb8e3de")>] (* アセンブリのバージョン情報は、以下の 4 つの値で構成されています: Major Version Minor Version Build Number Revision すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 既定値にすることができます: [<assembly: AssemblyVersion("1.0.*")>] *) [<assembly: AssemblyVersion("1.0.0.0")>] [<assembly: AssemblyFileVersion("1.0.0.0")>] (* () でも可 *) do()
最後の do() がないとコンパイラに怒られますよ。
(追記:「do()」の代わりに、「()」などでも動作します)
これをビルドすると以下のように、アセンブリ情報が付与されます。
簡単ですね。
サテライトアセンブリを作成していて、カルチャを指定する必要がある場合は、
open System.Resources (* 略 *) [<assembly: NeutralResourcesLanguageAttribute("")>]
を追加してください。