Visual Studio重构重命名导致XAML文件中属性的全局替换,原因不明。

6
我觉得我可能要疯了,但是我刚刚使用Visual Studio的重构-重命名功能,将视图模型(即C#文件)中的一个属性名称从“Width”更改为“Size”。完成后,错误窗口中出现了以下错误:
错误2:XML命名空间'http://schemas.microsoft.com/winfx/2006/xaml/presentation'中不存在属性“Size”。
该错误是指XAML UserControl文件。当我检查文件以查看问题所在时,我意识到所有名为“Width”的属性都已更改为“Size”。
例如:
<UserControl x:Class="ApbSymbolGenerator.Views.Symbol"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             Size="{Binding Size}"
             Height="{Binding Size}">

这是我第一次使用重构重命名功能对XAML文件进行更改(除了x:class值之外)。 (注意:我没有执行全局查找/替换,而是使用了重构重命名。我撤销了所有更改并重新执行了重命名,但结果仍然相同。)奇怪的是,它只影响了我的应用程序中有Width属性的几个XAML文件中的一个。
请问这里可能发生了什么?

WPF,你太棒了,打破了我们所有最喜欢的功能:重构、转到定义、不对致命错误保持沉默、强大的静态类型、注释任意代码的能力,以及其他我可能忘记的功能。 - Roman Starkov
即使现在,我也不会完全相信在Visual Studio中重构代码。确保在进行任何重大重构之前备份整个解决方案。它被知道偶尔会替换不相关的符号。我曾经遇到它将所有出现的ABC常量重构为XYZ,然后替换了不相关的内容。例如,我会发现一个已更改为Item.ABC的流氓项名称,尽管它与此完全无关,先前绝对不是Item.XYZ。永远不要完全相信对项目进行大规模更改的任何东西,即使是上帝本人编写的也不行。 - osirisgothra
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接