【问题标题】:Silverlight fails to fetch resource assembliesSilverlight 无法获取资源程序集
【发布时间】:2012-01-19 17:27:13
【问题描述】:

我们使用 .NET 资源管理器来本地化我们的 Silverlight 应用程序,并希望将德语 (“de”) 的附属程序集嵌入到 XAP 文件中。因此,我们将中性语言设置为“en”,并将“de”添加到 csproj 文件中支持的语言列表中。当我们在本地构建项目时,这很好用。如果我们使用 MSBuild (TFS) 构建 Silverlight 解决方案,Silverlight 将尝试使用来自 /ClientBin/de/*.dll 的 HTTP 请求获取附属程序集,而不是将这些文件嵌入到 XAP(确实存在)中。由于网络服务器为不存在的文件返回 404 错误代码,因此 Silverlight 崩溃并出现初始化错误。

事实证明,如果我们删除一个自定义 TFS 构建活动来操作程序集信息代码文件,Silverlight 应用程序将按预期工作。奇怪的是,重新启用该活动后,编译的 XAP 应用程序仍然可以工作(已针对在单独分支上工作的两个不同构建定义进行了验证)。自定义活动操作程序集属性 AssemblyConfigurationAssemblyCompanyAssemblyProductAssemblyCopyrightAssemblyTrademarkAssemblyVersionAssemblyFileVersion

一些额外的提示:

  • 自定义活动将在任何编译完成之前更改程序集信息文件
  • 使用 Visual Studio 编译操纵的源代码将构建一个工作 XAP
  • XAP 文件的内容(工作和不工作)相同(大小几乎相同,清单文件没有差异)
  • 使用ResourceManager("Resource", Assembly.GetExecutingAssembly()) 实例化资源管理器

我的问题是:

  • 为什么 Silverlight 会尝试从 /ClientBin/de/ 获取这些附属程序集,而不是仅使用 XAP 文件中的那些?
  • 程序集信息文件中的哪种属性会导致这种行为?
  • 为什么重新启用版本控制活动不会再次破坏 XAP?

【问题讨论】:

    标签: silverlight deployment tfs


    【解决方案1】:

    解决方案如下:我们使用名为“Total Commander”的工具在生成的 XAP 中编辑文件,以调整(通用)客户端连接到的 URL。由于我们添加了本地化 dll,使用 Total Commander 编辑 XAP 将导致上述行为。如果我们使用 WinRAR 或内部 Windows 存档管理器操作 XAP,一切都会按预期工作。

    编辑:比较我们发现的 XAP 文件后,Total Commander 使用反斜杠 (\) 来分隔目录,而 WinRAR 和 Silverlight 工具使用斜杠 (/)。看来我们在这里发现了一个隐藏的 Silverlight 功能 ;-)

    【讨论】:

      猜你喜欢
      • 2011-04-28
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      相关资源
      最近更新 更多