在 Resharper 更改全部命名空間之後,在 xx.g.cs 檔案裡面的 using 用了一個之前的命名空間,但是代碼裡面沒有地方使用,此時建構不通過,原因是 xaml 裡面存在引用
在安裝 Resharper 之後,可以右擊某個檔案夾或項目,點選 Refactor -> AdjustNamespaces 批量更改命名空間
盡管 Resharper 會将大量的 xaml 的元素改對了命名空間,但是有些沒有用到的标簽就沒有改全
如下面代碼
<Window x:Class="Lindexi.Doubi.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Lindexi.DoubiDemo"
mc:Ignorable="d"
ResizeMode="NoResize"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Border Background="Gray" Width="100" Height="100" Margin="10,10,10,10" >
<Button Click="Button_OnClick">點選</Button>
</Border>
</Grid>
</Window>
這裡的 local="clr-namespace:Lindexi.DoubiDemo" 沒有用到,我将命名空間從 Lindexi 修改為 Lindexi.Doubi 但是這裡沒有更改,而在生成的 MainWindow.g.cs 檔案會根據 xaml 的命名空間引用添加 using 代碼
是以在 g.cs 檔案會建立下面代碼
using Lindexi.DoubiDemo;
建構的時候提示找不到類或命名空間
>obj\Debug\net45\MainWindow.g.cs(12,18): Error CS0234: The type or namespace name 'DoubiDemo' does not exist in the namespace 'Lindexi' (are you missing an assembly reference?)
解決方法有兩個
第一個解決方法就是删除 xaml 裡面的這些引用,可以全局搜尋,替換字元串
namespace Lindexi.DoubiDemo
{
}