Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 卫星装配部署_C#_Windows Phone 7_Windows Phone - Fatal编程技术网

C# 卫星装配部署

C# 卫星装配部署,c#,windows-phone-7,windows-phone,C#,Windows Phone 7,Windows Phone,我正在尝试使用附属程序集本地化我的windows phone 7应用程序。我建造了 (al /t:lib /embed:stringlibrary.it-It.resx /culture:it /out:PhoneApp2.resources.dll /template:PhoneApp2.dll) 我的应用程序PhoneApp2的dll“PhoneApp2.resources.dll”来自一个资源文件stringlibrary.it.resx,然后我下载了该dll 使用webclient并将

我正在尝试使用附属程序集本地化我的windows phone 7应用程序。我建造了

(al /t:lib /embed:stringlibrary.it-It.resx /culture:it /out:PhoneApp2.resources.dll /template:PhoneApp2.dll)
我的应用程序PhoneApp2的dll“PhoneApp2.resources.dll”来自一个资源文件
stringlibrary.it.resx
,然后我下载了该dll 使用webclient并将其存储在一个目录中,然后从应用程序PhoneApp2将其删除。现在,dll驻留在PhoneApp2的isolatedstorage中

我有另一个资源文件stringlibrary.resx,它总是与应用程序一起编译,并且有英语支持条目(默认)

我在汇编文件中也有条目[assembly:NeutralResourcesLanguageAttribute(“it”,ultimateResourceCallbackLocation.Satellite)]

它总是在Messagebox中显示中性语言文本(英语),即使当前的语言和文化是意大利语。 这意味着它无法找到卫星组件

rm = new ResourceManager("PhoneApp2.stringlibrary", Assembly.GetExecutingAssembly());
string greeting = rm.GetString("String1");
MessageBox.Show(greeting);
但是如果我使用PhoneApp2而不是卫星程序集编译
stringlibrary.it.resx
,Messagebox会正确显示意大利语文本 当文化为意大利语时,英语为英语文化。我在部署卫星组件时是否遗漏了什么?请让我知道

问候,,
Senthil

我没有像您这样尝试本地化。对我来说,这似乎太复杂了。但是我已经本地化了几个应用程序,考虑到我很难找到一个完整的源代码来实现它,我在博客上写了它。这是我的博客:

基本上你是这样做的:

  • 创建项目
  • 在记事本中编辑.csproj文件,将所需的区域性添加到标记中
  • 在项目属性中选择中性区域性
  • 在解决方案资源管理器中将资源添加到项目中
  • 创建一个类来访问这些资源
  • 将该类添加到App.xaml文件的标记中
  • 将字符串放入资源文件中
  • 使用xaml中的资源绑定绑定到这些字符串
  • 如果使用ApplicationBar,则必须在代码中这样做,因为它不能绑定在xaml中
  • 为每个受支持的区域性创建另一个资源文件
  • 为每种支持的语言创建dll文件,以便标题在平铺和程序列表中正确显示

  • 您不能在已下载到独立存储中的应用程序中使用程序集。运行时只能加载/执行由Microsoft签名的程序集(因此,提交时已在XAP中的程序集)


    如果您想在以后下载其他翻译,您应该使用resx文件或任何其他格式,然后您可以自己解析。我的建议是对所有资源字符串使用某种数据库,然后将新下载的数据添加到此数据库中。这比您想要完成的要灵活得多:)

    谢谢您提供的信息。我已经完成了您所描述的所有步骤,并且运行良好。但是现在我想让用户选择下载dll(资源文件)所以只有很少的DLL集。我这样做是为了最小化.xap文件的大小。您描述的过程和我已经完成的过程将始终包括所有DLL。但我想有一个设置按钮,用户可以在其中选择区域性,只有这些DLL才会从Web服务器下载,并按照[assembly:NeutralResourcesLanguageAttribute(“it”,UltimateResourceCallbackLocation.Satellite)定义的目录结构存储在应用程序的独立存储中。这将查找意大利语资源文件的it目录。希望我已经清楚地说明了我要做的事情。感谢您提供的信息。我将尝试直接下载resx文件并对其进行解析。
    rm = new ResourceManager("PhoneApp2.stringlibrary", Assembly.GetExecutingAssembly());
    string greeting = rm.GetString("String1");
    MessageBox.Show(greeting);