gpt4 book ai didi

c# - 如何添加对不是使用 Silverlight 运行时构建的程序集的引用?

转载 作者:太空狗 更新时间:2023-10-30 00:00:24 25 4
gpt4 key购买 nike

我正在寻找一个可能的解决方案,我可以在其中添加 ShapeMap.dll 作为引用,但是当我尝试添加引用时,我收到一条错误消息:

You can't add reference to ShapeMap.dll, as it was not build against the Silverlight runtime. Silverlight projects will only work with Silverlight Assemblies"

我现在该怎么办?

最佳答案

虽然 Silverlight 代码看起来和闻起来都像是良好的旧 .NET 支持逻辑,
Silverlight 的运行时不同与支持常规 .NET 应用程序的运行时 .
将 Silverlight 运行时视为 .NET 运行时的子集 是很有用的:Silverlight 旨在在“沙箱”中运行,因此许多不安全的功能(例如直接访问文件系统)不存在允许。

因此,只能将 Silverlight 程序集添加到 Silverlight 项目。

因此,您收到的错误如前所述:您拥有的 ShapeMap.dll 版本不是为 Silverlight 运行时构建的。

有两种方法可以摆脱这种情况:

  • 查找或构建支持 Silverlight 的 DLL 版本
  • 以某种方式重构 Silverlight 应用程序,以便它通过 Web 服务利用 DLL 的功能(如果这有意义,因为名称 ShapeMap.dll 表明这可能处理难以/不可能远程处理的 UI 对象)

要获得支持 Silverlight 的 DLL 版本:
第一选择:可能只是您可以获得您在其中找到 .NET 版本的程序集的 Silverlight 版本的二进制
第二个选择:可能是您可以获得 [.NET targeting] DLL 的源代码
如果是这样,您可以尝试 - 我强调“尝试”- 用它制作 Silverlight 程序集。问题可能是源代码使用仅限 .NET 的习语/API 调用,然后您需要转换它们;几个只是 .NET-to-SL 的“陷阱”可以很容易地转换,其他的是绝对的障碍(例如直接访问文件系统、注册表等),尽管可能只注释掉有问题的部分代码,如果 Silverlight 不打算使用 DLL 的底层功能。

现在...为了全面披露...
有一些技术允许“欺骗”Visual Studio,以便在 SilverLight 项目中接受 .NET 程序集。参见示例 "Reusing .NET assemblies in Silverlight" .但是请注意,虽然对 .NET 和 Silverlight 运行时的性质非常有洞察力,并且在某些情况下可能有用,但这些技术没有记录,更重要的是,根据 DLL 使用的 .NET API 的子集,这些技术可能仅仅允许克服构建时阻塞,陷入各种运行时错误(当/如果应用程序调用 DLL 以调用运行时的仅 .NET 方法的方法时)。

关于c# - 如何添加对不是使用 Silverlight 运行时构建的程序集的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com