我正尝试将F#代码编译为Silverlight使用。我使用以下命令进行编译:
--noframework --cliroot "C:\program Files\Microsoft Silverlight\2.0.31005.0" --standalone
这会生成一个独立的程序集,引用了SL框架。但是当我尝试添加对生成的程序集的引用时,我会收到以下错误信息:
You can only add project references to other Silverlight projects in the solution.
VS插件是如何确定这不是Silverlight程序集的?这里是清单(manifest):
// 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中的某些内容。它们是peverifiable的,但其中的某些内容触发了拒绝。