我们使用.NET资源管理器来本地化我们的Silverlight应用程序,并希望将德语(“de”)的附属程序集嵌入到XAP文件中。因此,我们将中性语言设置为“en”,并将“de”添加到csproj文件中支持的语言列表中。当我们在本地构建项目时,这很好。如果我们使用MSBuild(TFS)构建Silverlight解决方案,Silverlight将尝试使用来自/ClientBin/de/*.dll
的HTTP请求来获取附属程序集,而不是将这些文件嵌入到XAP中(确实存在)。由于Web服务器为不存在的文件返回404错误代码,因此Silverlight因初始化错误而崩溃。
事实证明,如果我们删除操作程序集信息代码文件的自定义TFS构建活动,Silverlight应用程序将按预期工作。奇怪的是,在重新启用活动之后,编译的XAP应用程序仍然可以工作(验证了在单独分支上工作的两个不同的构建定义)。自定义活动操纵装配属性AssemblyConfiguration
,AssemblyCompany
,AssemblyProduct
,AssemblyCopyright
,AssemblyTrademark
,AssemblyVersion
和AssemblyFileVersion
。
其他一些提示:
ResourceManager("Resource", Assembly.GetExecutingAssembly())
我的问题是:
/ClientBin/de/
获取这些附属程序集而不是仅使用XAP文件中的附件?答案 0 :(得分:1)
以下是解决方案:我们使用名为“Total Commander”的工具编辑生成的XAP中的文件,以调整(通用)客户端连接到的URL。由于我们添加了本地化dll,因此使用Total Commander编辑XAP将导致上述行为。如果我们使用WinRAR或内部Windows归档管理器操作XAP,则所有操作均按预期工作。
编辑:在比较我们找到的XAP文件后,Total Commander使用反斜杠(\
)分隔目录,而WinRAR和Silverlight工具使用斜杠({{1} })。我们似乎在这里发现了一个隐藏的Silverlight功能; - )