2015-04-22 59 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");

相關問題