编辑Resources.resx文件时,Resources.Designer.cs无法更新,因为TFS没有检查它

时间:2012-07-11 08:56:43

标签: c# .net asp.net-mvc razor tfs

我正在使用TFS源代码控制。

当我将新资源键添加到我的资源文件 - Resources.resx - 并点击保存时,TFS会检出Resources.resx,但不会检查Resources.Designer.cs。这会导致对Resources.Designer.cs的更新失败,并显示错误:

  

您尝试的命令无法完成,因为无法更改必须修改的文件“Resources.Designer.cs”。如果文件受源代码管理,您可能需要检查它;如果文件在磁盘上是只读的,则可能需要更改其属性。

enter image description here

错误是正确的,因为文件是只读的并且文件未被检出。每次添加/编辑资源键时,我都不想手动检查设计器。有没有人知道解决方案或解决这个问题?

请注意,我将TFS设置为“签出保存”而不是“签出编辑”。这是为了减少未经编辑的结账量。

修改

这也发生在其他文件类型中。例如,我使用RazorGenerator来创建已编译的MVC视图。如果我尝试编辑.cshtml而不先检查.generated.cs,则会出现同样的问题。

更新

这个问题发生在所有(据我所见)具有自动生成代码隐藏的文件:.resx,.edmx,.aspx,.cshtml(当使用RazorGenerator进行编译视图时),等等。我们认为,仅仅因为“编辑:不做任何事”而痛苦是不值得的。我决定将其重置为“编辑时:自动结帐”。感谢大家的投入。不,谢谢TFS团队的失败。

4 个答案:

答案 0 :(得分:1)

我必须在工作中使用TFS。我已经看到了许多奇迹,我们花了很多时间来确定问题所在。 TFS是我公司的选择,但它不是我的最爱。

TFS(特别是当服务器速度很慢且您经常遇到网络问题时)对于我作为开发人员来说是一场灾难。 VS仅在解决方案中的文件中查找修改,因为您不能看到所有这些文件。当您使用第三方工具(fitnesse进行集成测试或自定义构建步骤)时,需要修改VS外部的文件 - 您可能会得到与您相同的错误。

但我们找到了解决方案。在我的机器上,我使用 git 。我们安装了 git-tfs 。 所有你需要记住的是三个魔术命令

  • git tfs fetch
  • git merge remotes / tfs / default
  • git tfs ct

就是这样。你永远不会破坏公司规则。与此同时,你将摆脱那种奇怪的问题。我们已经忘记了那场噩梦。

编辑:即将到来的TFS 2012中的本地工作空间将解决几个问题,TFS 2012将更接近SVN,但它不会是DVCS。 MS投资与外部DVCS集成 - 请欢迎 - Git-TF

答案 1 :(得分:1)

我认为这是问题

  

请注意,我将TFS设置为“check out on save”而不是   “退房编辑”。这是故意减少的数量   未经编辑的结帐。

要避免上述问题,请恢复为默认设置。然后下载TFS电动工具。 然后使用此命令还原已签出但不包含编辑的更改

tfpt uu /noget

更新:在更改上述设置时,问题不再出现。有关详细信息,请参阅以下讨论中的讨论。

答案 2 :(得分:1)

为什么要减少未经编辑的结帐?如果在没有更改的情况下签入文件,TFS会发出通知,并且它不会显示在文件的签入历史记录中。

您可以通过签出单个文件并立即签入来自行测试.TFS会告诉您哪里没有更改并且结帐已撤消。

enter image description here

所以也许可以考虑将其设置回结帐编辑?正如在另一个答案中提到的,这将解决您的问题......

答案 3 :(得分:1)

嗯,我认为这不是一个答案,所以我在评论中写道。 保存时检出仅在保存文件时触发,在文件自动生成时不会触发(自动生成不是用于保存的触发器,因为此文件由分配给resx的自定义工具编辑)。

我担心你不会得到正确答案(解决你问题的那个),除了它是设计的,但值得在connect打开案例并要求改变这种行为。