2009-10-21 129 views
0

我創建了一個新的VS解決方案,該解決方案需要包含來自另一個解決方案的文件的修改子集。兩種解決方案都有一個默認的「Microsoft.Windows.Controls」命名空間。舊解決方案中的程序集名爲「WPFToolkit」,新程序集名稱爲「DatePicker」。我複製到新解決方案中的一個文件是名爲「ExceptionStringTable.txt」的嵌入式資源。內容如下所示,雖然我不知道它是什麼格式:將文本轉換爲.resources文件

; DataGrid Selection Commands 
DataGrid_SelectAllCommandText=Select All 
DataGrid_SelectAllKey=Ctrl+A 
DataGrid_SelectAllKeyDisplayString=Ctrl+A

我設置了文件的「生成操作」爲「嵌入的資源」像原來的解決方案。在運行時,它的加載這樣的:

private static ResourceManager _resourceManager = 
    new ResourceManager("ExceptionStringTable", typeof(SR).Assembly);

在執行

_resourceManager.GetString(id.String)
我收到此運行時異常代碼:

System.Resources.MissingManifestResourceException發生 消息=「找不到合適的任何資源確保\「ExceptionStringTable.resources \」在編譯時被正確嵌入或鏈接到程序集\「DatePicker \」中,或者所有需要的附屬程序集都是可加載且完全簽名的。

編程上市程序集的資源名稱,我得到這個:

 DatePicker.g.resources 
    Microsoft.Windows.Controls.Resources.ExceptionStringTable.txt 
    Microsoft.Windows.Controls.Properties.Resources.resources

什麼我必須做的,這樣ExceptionStringTable.txt被轉換成它的.resources等同然後嵌入到我的組件,使得URI「 ExceptionStringTable「找到它?

回答

1

您需要將TXT文件轉換成一個.resource文件:

resgen.exe ExceptionStringTable.txt 

這將輸出一個ExceptionStringTable.resources文件。這個文件需要添加爲嵌入式資源

您可能想要檢查舊的項目文件以查看是否存在postbuild任務或者是否會自動執行此操作。

UPDATE:

你最簡單的方法可能是.txt文件轉換爲.resx文件:

resgen.exe ExceptionStringTable.txt ExceptionStringTable.resx 

,然後添加該文件作爲嵌入式國土資源。之後,您可以刪除舊的.txt文件。