2010-12-30 13 views
3

F#PowerPack用のビルド済みバイナリは、.NET 2.0ランタイムに対してコンパイルされます。 .NET 4.0プロジェクトがある場合、.NET 4ランタイムのPowerPackソースをコンパイルする利点はありますか?F#PowerPackターゲットランタイム

+0

F#v2 SP1コンパイラを使用して.NET 4.0に対して構築されたF#PowerPackバイナリが必要な人は、[こちら](http://dl.dropbox.com/u/10282384/FSPowerPac kCLR4SP1.7z)。 – ildjarn

+0

本当にうれしいのは、.NET 2と.NET 4の両方のバイナリを含む公式のNuGetパッケージです。 –

答えて

7

.NET 4.0 ASP.NETプロジェクトであるF# snippets web siteに、F#PowerPackの.NET 2.0バージョンを使用しました。 4.0バージョンを使用しないことの唯一の欠点は、2.0バージョン(PowerPackの2.0バージョンで参照される)を探すときにFSharp.Core.dllの4.0バージョンをロードする設定を追加しなければならないことでした。

私は、次のようなものを追加する必要がありましたし、それがうまく働いた:

<configuration> 
    <!-- ... --> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" /> 
     <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 
+1

だから、いくつかの利点がありますが、巨大なものではありません。それでも、F#はVS 2010の一部としてリリースされたので、PowerPackのデフォルトのバイナリダウンロードにはこのような回避策が必要になることは奇妙に思えます。 –

+1

私はちょうどfsharpとfsharp powerpackを使ってasp.net mvc 3サイトに問題がありました。例外メッセージで失敗しました:ファイルまたはアセンブリ 'FSharp.Core、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)。私は上記のようにdependantAssembly要素を追加し、それをソートしました。 – Kit

+0

@Kitこれはかなり前のことだったので、私はもう詳細を知らない:-)。 F#PowerPack for .NET 4.0(ソースコードを使用)を再コンパイルするほうが簡単かもしれないと思います。 –

1

を古い.NETのための私のapp.configが

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

ですが、パワーパックがインストールされ、上うまく機能VS2010と.NET4 fsproj