2010-02-04 60 views
22

我有Resources.resx,用於生成Resources.designer.cs。是否應該檢入Resources.designer.cs,還是可以依賴Visual Studio在需要時生成它?Resources.Designer.cs應該受源代碼控制嗎?

+7

[Microsoft says](http://connect.microsoft.com/VisualStudio/feedback/details/285765/resources-designer-cs-doesnt-automatically-get-rebuilt-despite-it-being-an-auto-生成文件)「定製工具在設計時運行,而不是在構建時運行,因此需要將相關文件檢入源代碼管理。「 – 2014-02-07 04:20:28

回答

11

我的選擇是:如果它是由構建系統修改,確保構建過程將創建它並沒有在檢查

對於像「設計師」自動生成的文件,我檢查他們他們只當其他組件發生變化時(通過我)進行修改。它由VS生成,不會被構建系統修改。

1

我不是100%確定這個文件的構建方案。我認爲可能Studio或更合適的msbuild會在您每次構建應用程序時重新生成文件,但不確定。

不管怎樣,我還是會檢查該文件中的一對夫婦的原因

  1. 它是在Visual Studio中大多數源代碼控制的默認設置。他們認爲這個問題比我有更多的困難,並可能有很好的理由這樣做
  2. 調試:在Resource.Designer.cs中不太可能會有問題,但如果有的話你會被迫建立之前,你可以附加/調試
  3. 源代碼管理應該是你的來源的歷史。如果您無法看到與您的應用程序相關的所有來源,它有什麼用呢?

第一個原因是最重要的

+0

關於第1點,可能是這種情況,但Xamarin團隊自己在GitHub項目中忽略了它,所以我覺得最多隻是這一論點的一方 – 2017-07-30 03:19:26

6

我在你的帖子跑了問題我遇到,不完全一樣,但它幫我找到了一個臨時解決方案。這是我發現可能會幫助你...

我正在創建一個簡單的字符串資源文件。然後我使用一個修改後的CodeProject程序將其翻譯成外語。 (一旦我們穩定代碼,我們將使用專業服務)該實用程序不會創建designer.cs文件。做一個重建所有也沒有重新創建文件。看來,只要您使用外部工具(而不是Visual Studio設計器)來修改resx文件,就會失去這些同步的更改。在我的情況下,設計器文件僅用於將字符串強制鍵入屬性名稱。如果您使用ID來拉動字符串(舊的方法),那麼您根本不需要這些文件,因此不需要將它們檢入到源代碼控制中。但是,如果您使用強類型訪問這些字符串(更現代的方法),您應該檢查它們。

另一方面...我找到了一種方法來將這些designer.cs文件與它們的resx計數器重新同步因爲那是我的問題......我需要它們。在解決方案資源管理器中選擇resx文件並將CustomTool屬性設置爲PublicResXFileCodeGenerator立即創建了designer.cs文件。不幸的是,如果它已經設置,你必須取消設置,然後重新設置它來創建文件。 如果有人知道通過一些自動化手段強制重新創建這些方法...我真的很感激它。

謝謝。

+7

你好丹尼斯你可以手動運行ResX代碼生成器通過右鍵單擊resx-File並選擇「運行自定義工具」。 – theDmi 2012-07-04 09:28:54