2010-05-31 53 views
3

我在Resources.Designer.cs中添加了一個小功能,它工作得很好,問題是當我從Resources.resx中添加或刪除某些內容時,此功能總是被刪除,是否有任何指示我可以放棄或反正繞過這個?防止(手動輸入)在Resources.Designer中刪除代碼

謝謝!


這是一個非常簡單的方法,用作索引器。

internal static string Keys(string key) 
{ 
    return ResourceManager.GetString(key, resourceCulture); 
} 

我這樣做是因爲你不能做Properties.Resources然後concat一個值。一個擴展可以工作,但是我試過了,它變得很花哨,因爲它都是靜態方法,你不想實例化。

想法?

+0

我希望它是作爲一個部分類生成(或至少給出選項這樣做)。 創造出了相關UserVoice的項目: https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5709384-have-resources-resxfilecodegenerator-generate-part – Jaans 2014-04-01 05:16:49

回答

4

resx文件的代碼部分是由名爲PublicResXFileCodeGenerator(或InternalResXFileCodeGenerator,取決於您設置資源文件的可見性)的工具自動生成的。它說,就在文件的頂部:

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.1 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

如果你真的需要解決這個問題,you'll need to subclass the PublicResXFileCodeGenerator,並實現自己的工具,Visual Studio可以運行(即VS運行生成的RESX代碼的工具)每次它想刷新一個資源文件。

覆蓋該工具將允許您生成部分類,然後您可以將您的自定義代碼存儲在另一個.cs文件中作爲另一個部分類的資源文件類。

儘管如此,有可能更簡單的方法。您正在實施的自定義代碼是什麼?你可以把它變成擴展方法嗎?多一點細節可能會幫助我們指出一個更好的方向。

+0

它使用了非常簡單的方法爲索引。 內部靜態字符串鍵(字符串鍵) { return ResourceManager.GetString(key,resourceCulture); } 我這樣做是因爲你不能做Properties.Resources然後連接一個值。 一個擴展可以工作,但我試過了,它變得很花哨,因爲它都是靜態方法,你不想實例化。 想法? – Pierluc 2010-05-31 20:14:23

+1

嗯,有趣。我收回它,可能沒有更簡單的方法;)您可以嘗試tvanfosson從這個線程的建議:http://stackoverflow.com/questions/249222/can-i-add-extension-methods-to-an - 現有靜態類。如果你不想使用包裝類,那麼你可能花更多的時間來調整代碼生成。 – womp 2010-05-31 20:26:38

0

我不能在此刻驗證,但如果自動生成的類是局部類,創建另一個cs文件匹配的部分類,並添加任何ammendments到

編輯

證實設計師resx類不是部分的(看起來它應該是一個生成的文件?),所以擴展方法可能是最好的。

+1

如果你已經閱讀我的答案,你會知道。 – 2010-06-01 17:35:26