2015-04-22 110 views
2

我正在构建Windows Phone 8.1应用程序。对于视图中使用的本地化资源,它使用“新”.resw文件。在发布模式下部署到设备时,MdilXapCompile错误1004

由于几个原因,我在可移植类库中构建了应用程序的视图模型。这些视图模型还使用一些本地化文本,这些文本位于同一项目中的.resx文件中。最初,一切似乎都运作良好。

今天,我注意到我无法将我的应用程序部署到版本模式下的物理设备,我确定resx文件在某种程度上导致了这种情况。 Visual Studio中给了我,当我尝试部署此错误:

DEP6810 : MdilXapCompile.exe failed with error code 1004. See log file 'C:\MySolution\MyPCLProject\obj\Release\MDIL\MDILXapCompileLog.txt' for more details.

在日志文件本身:

Error: Compile filter argument specified non-existent file: C:\MySolution\MyPCLProject\obj\Release\MSIL\en\MyPCLProject.resources.dll Invalid argument

Microsoft (R) MDIL XAP Compiler - Version 4.0.0.0 Copyright (c) Microsoft Corporation. All rights reserved.

Usage: MDILXAPCompile /In: /Out: /Config: [/CompileFilter:;] [/Timeout:] [/Log:] [/AppX]

是什么工作?

  • 编译在调试和发布版本
  • 部署在调试WP模拟器和发布版本
  • 运行部署的软件

这似乎是一个很奇怪的限制我,但到目前为止,我一直无法确定为什么只有这一个(不幸的是相当重要)案件失败。

有谁知道我是否可以让资源像调试版本中一样工作?

我创建了一个blank solution(.zip 41 kB),它会重现错误。应用程序在TextBlock中显示PCL中唯一的资源,以确认资源已被嵌入。

+0

有完全一样的问题。适用于WinRT(8.1 x64)和Android(Xamarin.Forms),但最近部署到WP 8.1时会出现这些问题。 我正在使用Windows App Localization Toolkit。 –

+0

Microsoft.Data.Edb,Microsoft.OData和System.Spatial - 相同的错误。 – Vlad

回答

1

尝试部署物理设备是否被设置为调试或发布时,我已经遇到了类似的问题。 其中一个解决方法是按照Phil Hoff's blog上的说明进行操作,但这并不适合我,所以我发明了自己的解决方法。

事实证明.resx文件可以很容易地转换为.resw(本机Windows Phone 8.1资源格式),如果它们只包含字符串值。 我开发了一个small tool,它从PCL复制.resx文件,并将它们作为.resw文件自动放入Windows Phone 8.1项目中。然后你可以从这样的代码达到这些目标:

var resourceLoader = new ResourceLoader(); 
var localizedText = resourceLoader.GetString("MyCustomReswFile/MyStringId"); 

也来看看这个问题

Unable to access localized resources in .NET 4.5 PCL from Windows Phone 8.1

对于好的结合我结束了创建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");

相关问题