当前位置:  开发笔记 > 编程语言 > 正文

Silverlight如何确定程序集是"Silverlight"?

如何解决《Silverlight如何确定程序集是"Silverlight"?》经验,为你挑选了1个好方法。

我正在尝试从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添加到"SL库"DLL中,它仍然加载.

有什么建议?

更新:我做了一些探讨,似乎并不重要.它不喜欢FSharp库中IL的内容.它们是可以防腐的,但是那里的东西引发了拒绝.



1> MichaelGG..:

回答!

显然问题是,当您添加对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'

如果我保持优化代码,这就消失了,一切正常.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有