Я пытаюсь скомпилировать код из F # для использования в Silverlight. Я компилирую:
--noframework --cliroot "C: \ program Files \ Microsoft Silverlight \ 2.0.31005.0" --standalone
Это создает автономную сборку, которая ссылается на структуру SL. Но когда я пытаюсь добавить ссылку на сгенерированную сборку, я получаю такую ошибку:
Вы можете добавлять ссылки на проекты только в другие проекты Silverlight в решении.
Что делает плагин 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 в DLL "SL library", и она все еще загружалась.
Какие-либо предложения?
Обновление. Я кое-что покопался, и мне кажется, что манифест не имеет значения. Не нравится что-то в IL из библиотек FSharp. Их можно проверить, но что-то внутри вызывает отказ.