3

我想做的事

我一直在玩新发布的 Silverlight 5 和Silverlight 5 Toolkit(2011 年 12 月),我想尝试将我的 3D Silverlight 测试应用程序部署到第三方托管服务器(在我的情况下为 AppHarbor,但我对其他选项开放)。

我的测试应用程序只是您在创建新 Silverlight 3D 应用程序时获得的默认 Silverlight 3D 应用程序:

看起来 AppHarbor(和大多数其他托管站点)要求您将所需的 Silverlight 5 DLL 复制到您的项目中,因为它们没有在其服务器上安装所需的 SDK/工具包。

理论上看起来不错,但我不知道如何用 Silverlight 实际做到这一点。

问题

问题有两个方面:

  1. 我不确定哪些 DLL 需要手动复制到我的项目中,我不确定应该如何包含和引用它们。

  2. 在尝试将一些 Silverlight XNA DLL 复制到我的项目中并引用本地项目 DLL(而不是 SDK 安装和 Toolkit 安装的 DLL)之后,当我在浏览器中运行基本 3D Silverlight 应用程序时,它现在崩溃了 - -本地。(Silverlight 插件崩溃了。)在我开始摆弄引用和 DLL 之前,我没有遇到这个问题。默认项目工作得很好。所以我什至还没有部署到托管服务器,因为它不再在本地运行。

旁白

关于上面的后一点(Silverlight 插件崩溃),问题似乎与3D Silverlight 功能有关,这显然需要提升信任/权限——诚然,我还不完全理解这一切是如何工作的。

一般来说——不管所有这些 DLL/参考摆弄——似乎我需要在 Silverlight3dApp 项目属性中检查“在浏览器中运行时需要提升信任”,以使旋转的 3D 立方体应用程序显示在浏览器中. 或者,如果我不选中该选项,我需要在浏览器中手动右键单击 Silverlight 5 应用程序并在“权限”选项卡上启用 3D 图形。(旁注:如果我确实部署了它,我对这将如何影响我的最终用户感兴趣。他们是否必须以相同的方式手动调整权限?无论如何,这是另一天的问题。)

撇开这一点不谈:

  1. 如果我将所有内容保持默认状态,Silverlight 插件不会崩溃。
  2. 如果我将 Silverlight DLL 复制到我的项目中并在本地引用它们,如果启用了 3D 权限,Silverlight 插件就会崩溃。
  3. 如果我将 Silverlight DLL 复制到我的项目中并在本地引用它们,如果禁用3D 权限,Silverlight 插件不会崩溃。

问题

有没有人成功地将基本的 Silverlight 5 3D 应用程序部署到没有安装 Silverlight 5(和 Silverlight 5 Toolkit)的服务器上?

你是怎么做到的?哪些文件需要复制到我的项目中并在本地引用?哪些引用(如果有)需要删除?

子问题:如果有人对提升的信任/权限问题有任何见解,我也很想听听。

4

3 回答 3

5

对于 AppHarbor,我在 Silverlight 项目 (lib) 中创建一个文件夹,并复制我所依赖的所有程序集,并将所有程序集标记为copy to output

接下来,我使用subst创建一个指向该文件夹的虚拟驱动器,并将所有引用添加到该虚拟驱动器上的程序集。(这对于 AppHarbor 来说不是必需的,但这样我可以将我的代码签出到我想要的任何机器上的任何文件夹中,而不会弄乱路径)

请注意,您还需要将这些 dll 添加到存储库 (git/mercurial),因为标准 .hgignore 文件将跳过 *.dll 文件。

于 2012-01-04T11:02:32.577 回答
0

您是否确认您正在运行 Silverlight 的最新运行时?您是否安装了以前的开发人员运行时?http://www.microsoft.com/getsilverlight/get-started/install/

于 2012-01-03T20:19:36.450 回答
0

嗯...我将采用上述答案。我正在使用最新的 Silverlight 5 运行时和 Silverlight 5 Toolkit,并且没有遇到任何问题。这是我在 Silverlight 中加载 FBX 模型并为其设置动画的应用程序(它确实需要您右键单击并设置权限),它工作正常:

http://www.dustinhorne.com/necodecamp.html

顺便说一句,我正在考虑是提高信任度还是强制用户允许 3D 加速。从安全的角度来看,我个人讨厌让整个应用程序提升对 3D 内容的信任,尽管如果你想在浏览器之外运行它,你可能还是想这样做并使用代码签名证书对应用程序进行签名。

于 2012-01-06T19:14:18.700 回答