2008-10-25 51 views
11

我想從F#編譯代碼在Silverlight中使用。我編譯:Silverlight如何確定程序集是「Silverlight」?

--noframework --cliroot 「C:\ Program Files文件\微軟的Silverlight \ 2.0.31005.0」 --standalone

這會產生一個獨立的組件引用SL框架。但是,當我嘗試添加一個引用生成的程序集,我得到這個錯誤:

You can only add project references to other Silverlight projects in the solution.

什麼是VS插件做決定,這不是一個Silverlight組件?這裏的清單:

// 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。我甚至將無法驗證的IL添加到「SL庫」DLL中,並且它仍然加載。

有什麼建議嗎?

更新:我已經做了一些戳動,它似乎不是重要的清單。它不喜歡FSharp庫中的IL。他們是可以驗證的,但是那裏有東西引發了拒絕。

+0

如果您有答案,請不要忘記與我們分享。我也想知道這一點。謝謝! – chakrit 2008-10-25 21:56:06

+0

同樣在這裏,我愛F# – 2008-10-28 18:07:26

+0

我一定會發布它,如果我知道它:P – MichaelGG 2008-10-28 18:19:32

回答

7

回答!

顯然問題是,當您添加對bin \ Release或bin \ Debug的引用時,Visual Studio(或Silverlight項目系統)決定嘗試引用該項目。無論出於何種原因,此失敗

如果您將F#輸出DLL複製到另一個位置,那麼引用就會很好。 (當然,這將是一個文件引用,而不是項目引用。)然後設置依賴關係,以便F#庫首先構建,然後可以使用文件引用來獲取F#生成的二進制文件。

更新:還有一個明顯的問題。如果我把優化的代碼,然後我得到這個錯誤:

C:\test\SilverlightApplication1\FSC(0,0): error FS0193: internal error: the module/namespace 'System' from compilation unit 'mscorlib' did not contain the namespace, module or type 'MarshalByRefObject' 

如果我堅持過優化的代碼,這會消失,一切工作正常。

0

Visual Studio使用Microsoft.VisualStudio.Silverlight.SLUtil類型中的IsSilverlightAssembly()函數來檢查是否可以設置引用。

大衛Betz有一個很好的博客文章,描述的細節here

相關問題