F# からコードをコンパイルして Silverlight で使用しようとしています。私はコンパイルします:
--noframework --cliroot "C:\program Files\Microsoft Silverlight\2.0.31005.0" --standalone
これにより、SL フレームワークを参照するスタンドアロン アセンブリが生成されます。しかし、生成されたアセンブリへの参照を追加しようとすると、次のエラーが発生します。
ソリューション内の他の Silverlight プロジェクトへのプロジェクト参照のみを追加できます。
これが Silverlight アセンブリではないことを確認するために、VS プラグインは何をしていますか? マニフェストは次のとおりです。
// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (7C EC 85 D7 BE A7 79 8E ) // |.....y.
.ver 2:0:5:0
}
.assembly FSSLLibrary1
{
// --- The following custom attribute is added automatically, do not uncomment -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module 'F#-Module-FSSLLibrary1'
// MVID: {49038883-5D18-7281-A745-038383880349}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x04120000
何が気に入らないのか理解できません。それは純粋に検証可能なILです。SL「クラス ライブラリ」アセンブリと比較しましたが、見た目は同じです。唯一の違いはいくつかの属性でしたが、それらを削除しても、VS は引き続き DLL を参照できました。「SLライブラリ」DLLに検証不能なILを追加しても、まだロードされていました。
助言がありますか?
更新:私はいくつかのことを調べましたが、重要なのはマニフェストではないようです. FSharp ライブラリからの IL の何かが好きではありません。それらは永続可能ですが、そこにある何かが拒絶を引き起こしています.