(问题的重新解决方案底部有一个链接。)
我一直在使用带有.resx资源的便携式库,因为它适用于Windows应用商店应用和Windows Phone应用。我尝试将它与通用应用程序一起使用,它适用于Windows应用商店部分,但不适用于Windows Phone。
仅当我尝试在设备上部署应用程序(使用Release配置构建)时,才会出现此问题。如果我只是构建它,它不会给出错误(但它仍然无法成功部署在设备上)。我收到以下错误:
Error : DEP6810 : MdilXapCompile.exe failed with error code 1004. See log file
'...\Phone App Test\Phone App Test\obj\Release\MDIL\MDILXapCompileLog.txt' for more details.
在那个文件中:
Error: Compile filter argument specified non-existent file:
...\Phone App Test\Phone App Test\obj\Release\MSIL\en-US\PCL.resources.dll
Invalid argument
该文件确实不存在,但该应用程序不支持en-US文化,只有库才有,所以我认为不需要这个文件。
知道如何解决这个问题吗?
以下是问题的简单解决方案:link
答案 0 :(得分:3)
不幸的是,Phil Hoff blog中描述的解决方法对我来说并不适用。我已经开发了自己的解决方法。事实证明,如果您使用.resx文件仅存储字符串值,那么您可以轻松地将它们转换为.resw并在Windows Phone 8.1中本机使用。
所以我正在做的是从PCL复制和转换资源,并使用我制作的工具ResxHell自动将每个版本的Windows Phone项目放置在Windows Phone项目中。只需按照存储库中的说明操作,即可访问此类资源
var resourceLoader = new ResourceLoader();
var localizedText = resourceLoader.GetString("MyCustomReswFile/MyStringId");
为了更好的绑定,我最终创建了ValueConventer和小型本地化助手类,看看这个要点:Binding from .resw files example
使用它可以在xaml页面中执行以下操作:
//For resource in file Page.Login.resw and string ID "NotUserYet"
<TextBlock Text="{Binding ConverterParameter=Page.Login/NotUserYet, Converter={StaticResource ResString}, Mode=OneWay, Source={StaticResource ResString}}"/>
或
string localizedtext = LocalizationHelper.GetString("MyCustomReswFile", "MyStringId");
答案 1 :(得分:1)
我发现这已经报告给ms连接
并且还有一个我尚未尝试的解决方法。
不幸的是,到目前为止还没有解决。
答案 2 :(得分:1)
你可以在pcls中拥有.resx文件,你只需要使用http://blogs.msdn.com/b/philliphoff/archive/2014/11/19/missingmanifestresourceexception-when-using-portable-class-libraries-in-winrt.aspx上解释的解决方法
即使使用最新的VS 2013(更新5),尝试部署Release软件包时也会出现mdil错误。
MdilXapCompile.exe失败,错误代码为1004
要解决此问题,您必须使用store选项编译应用程序,然后使用Application Deployment工具将其实际部署到设备。
答案 3 :(得分:0)
你当然没有选中&#34; Build&#34; Configuration Manager中的复选框,这就是不自动复制资源的原因。检查它,它会工作。
答案 4 :(得分:0)
最后,似乎您不能在通用应用程序的WP部分中使用.resx文件将PCL库与本地化资源一起使用。至少它不是微不足道的。
当应用程序在Realese配置中构建时存在运行时问题,我无法解决,所以我决定更改为.resw资源。当然,这解决了我的问题,但我不得不复制资源,这是我试图避免的。
答案 5 :(得分:0)
有同样的问题。我尝试通过Windows Phone部署工具进行部署,但它确实有效。 因此,不要使用Visual Studio来部署:创建包并将它们放在手机上,它可以工作!!