Mah*_*ika 4 c# asp.net silverlight
我正在寻找一个可能的解决方案,我可以添加ShapeMap.dll作为参考,但当我尝试添加引用时,我得到一个错误说明:
您无法添加对ShapeMap.dll的引用,因为它不是针对Silverlight运行时构建的.Silverlight项目仅适用于Silverlight程序集"
现在我该怎么做?
mjv*_*mjv 10
虽然Silverlight代码可能看起来和闻起来像旧的.NET支持的逻辑,
但Silverlight的运行时与支持常规.NET应用程序的运行时不同.
将Silverlight运行时视为.NET运行时的子集非常有用:Silverlight旨在在"沙箱"中运行,从而不允许直接访问文件系统等许多不安全的功能.
因此,只能将Silverlight程序集添加到Silverlight项目中.
因此,您所得到的错误是:您拥有的ShapeMap.dll版本不是为Silverlight运行时构建的.
这种情况有两种方法:
要获得Silverlight支持的DLL版本:
首选:可能只是您可以获得发现.NET版本的程序集的Silverlight版本的二进制文件.
第二种选择:可能是你可以获得[.NET targeting] DLL 的源代码.
如果是这样你可以尝试 - 我强调"尝试" - 从中制作一个Silverlight程序集.问题可能是源代码使用仅使用.NET的习语/ API调用,然后您需要转换它们; 几个只是.NET-to-SL"陷阱"可以很容易地转换,其他是绝对的障碍(例如,直接访问文件系统,注册表等),尽管,可能只是注释掉有问题的部分代码,如果,某种程度上Silverlight不会使用DLL的底层功能.
现在......为了充分披露...
有一些技术允许"愚弄"Visual Studio,以便在SilverLight项目中接受.NET程序集.请参阅"在Silverlight中重用.NET程序集".但要注意,虽然非常了解.NET和Silverlight运行时的性质,并且在某些情况下可能有用,但这些技术没有文档记录,更重要的是,取决于DLL使用的.NET API的子集,只是允许克服构建时阻塞,陷入各种运行时错误(当/如果应用程序调用DLL到方法,而这些方法又调用运行时的.NET方法).
如果您可以访问该程序集的源文件(dll),请创建一个新的Silverlight类库项目,并将所有现有的源文件添加到新项目中.然后尝试构建项目.根据依赖项的数量,您可以成功构建与Silverlight兼容的程序集版本.
如果您没有源代码,那么抱歉您运气不好.