C# · 12月 31, 2021

c# – 当编辑Resources.resx文件时,Resources.Designer.cs无法更新,因为TFS没有检查出来

我正在使用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.

错误是正确的,因为文件是只读的,文件没有签出.每次添加/编辑资源密钥时,我都不需要手动检查设计器.有人知道解决方案还是解决这个问题?

请注意,我将TFS设置为“检出保存”,而不是“退出编辑”.这是故意减少未经编辑的结帐量.

编辑:

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

更新:

这个问题发生在所有(据我所见)所有具有自动代理代码隐藏的文件:.resx,.edmx,.aspx,.cshtml(使用RazorGenerator编译后的视图)等等.我已经决定对于“编辑:不做任何事情”设置是不值得的.我已经决定将其重新设置为“编辑:自动结帐”.感谢大家的投入.不要感谢TFS团队的这个失败.

解决方法 嗯,我不认为这是一个答案,所以我写了评论.
保存结帐仅在您保存文件时触发,当文件自动生成时不触发(自动生成不会触发进行检出的保存,因为此文件由分配给resx的自定义工具编辑).

恐怕你不会得到正确的答案(这将解决你的问题),除了它是设计,但可能是值得打开一个案件在connect,并要求改变这种行为.