2012-07-11 88 views
11

我正在使用TFS源代碼管理。編輯Resources.resx文件時,Resources.Designer.cs無法更新,因爲TFS未檢查出它

當我添加一個新的資源鍵到我的資源文件--Resources.resx並點擊保存時,TFS檢出Resources.resx但不檢出Resources.Designer.cs。這將導致更新Resources.Designer.cs失敗,出現錯誤:

The command you are attempting cannot be completed because the file 'Resources.Designer.cs' that must be modified cannot be changed. If the file is under source control, you may want to check it out; if the file is read-only on disk, you may want to change its attributes.

enter image description here

的錯誤是在正確的文件是隻讀的並且文件未簽出。我不想在每次添加/編輯資源密鑰時手動檢查設計器。有沒有人知道解決方案或解決此問題?

請注意,我已將TFS設置爲「檢出保存」,而不是「檢出編輯」。這是故意減少未經編輯的結賬數量。

編輯:

這發生在其他文件類型也。例如,我正在使用RazorGenerator來創建編譯的MVC視圖。如果我嘗試編輯.cshtml而不先檢出.generated.cs,則會出現同樣的問題。

UPDATE:

在所有出現此問題(據我見過)有一個自動生成的代碼隱藏文件:的.resx,的.edmx,的.aspx,.cshtml(使用RazorGenerator時對於已編譯的視圖)等等。我已經決定,僅僅爲了「編輯:無所事事」而設置它是不值得的。我決定將其重置爲「在編輯時自動結賬」。感謝大家的意見。不用感謝TFS團隊爲這個失敗。

+1

保存結帳只在保存文件時觸發,當文件自動生成時不會觸發...... :(我擔心除了設計之外您不會得到正確的答案,但可能值得打開一個在https://connect.microsoft.com/上的案例,並要求改變這種行爲 – 2012-08-11 20:37:35

+0

@GoranObradovic。這是關於我有過的最好/最準確的答案,將它作爲答案發布,你將得到賞金。 – 2012-08-12 09:15:45

回答

1

嗯,我不認爲這是一個答案,所以我寫了評論。 保存結賬只在保存文件時觸發,當文件自動生成時不會觸發(自動生成不會觸發保存結帳,因爲此文件是通過分配給resx的自定義工具編輯的)。

恐怕你不會得到正確的答案(將解決你的問題的那個),除了它是由設計,但它可能是值得打開一個案件connect並要求改變這種行爲。

1

我必須在工作中使用TFS。我見過很多奇蹟,而且我們花了很多時間找出問題所在。 TFS是我公司的選擇,但它不是我最喜歡的。

對於作爲開發人員的我來說,TFS(特別是當服務器速度很慢並且您經常遇到網絡問題時)對我來說是一場災難。 VS只在解決方案中的文件上進行修改,正如你可以看到的不是所有的文件。當您使用第三方工具(fitnesse進行集成測試或自定義構建步驟)時,需要修改VS之外的文件 - 您可能會得到與您一樣的錯誤。

但是我們找到了解決方案。在我的機器上,我使用git。我們已經安裝了git-tfs。 和所有你需要記住的三件法寶命令

  • 混帳TFS獲取
  • 混帳合併遙控器/ TFS /默認
  • 混帳TFS CT

就是這樣。你永遠不會違反公司規則。與此同時,你將擺脫那種奇怪的問題。我們已經忘記了那個噩夢。

編輯:即將到來的TFS 2012中的本地工作區將解決幾個問題,TFS 2012將更接近SVN,但它不會是DVCS。MS投資與外部DVCS集成 - 歡迎 - Git-TF

+0

這會讓我比現在更麻煩,目前我的工作是在保存之前明確檢查文件。你知道更簡單的解決方案,同時保持* onedit = donothing *設置。 – 2012-08-05 14:43:35

+1

我相信新的TFS(2012)現在還可以檢測出解決方案之外發生的文件更改,我已經看到了這個證明,但似乎無法在網上找到任何關於此的直接信息... – Raf 2012-08-10 10:57:47

+0

@raf這是正確的,TFS 2012具有「本地工作空間」的概念,並且默認啓用。 – 2012-08-10 12:56:53

1

我覺得這是問題

Note that I have TFS set up to "check out on save" as opposed to "check out on edit". This is deliberate to reduce the amount of unedited checkouts.

爲了避免上述問題,恢復到默認設置。然後下載TFS電動工具。 然後用這個命令來恢復被檢出的變化,但不包含編輯

tfpt uu /noget 

更新:在上面設置問題不再發生變化。有關詳情,請參閱下面的評論。

+0

我編輯資源文件時檢查資源文件比較容易。請注意,當前設置是故意的,不可恢復。 – 2012-08-03 09:15:42

+0

@flem不在VS客戶端級別設置而不在TFS服務器端?如果客戶端,你可以改變這一點,看看這是否工作? – Ankush 2012-08-03 09:18:00

+0

Ankush。我想要這個。此外,我不希望每次登記時都要運行tfpt命令。我更容易明確檢查這個特定的文件。 – 2012-08-03 10:53:25

1

爲什麼你想減少未經編輯的結賬?如果文件未經修改而簽入,TFS通知並且不會顯示在文件的簽入歷史記錄中。

您可以通過簽出單個文件並立即簽入來自行測試。TFS會告訴您在那裏沒有任何更改和結帳未完成。

enter image description here

因此,也許可以考慮設置回收銀臺上編輯?正如在其他答案中提到的,這將解決您的問題...

+0

謝謝,但這不是一個選項。我想要關閉編輯結帳。 – 2012-08-11 13:05:36