天天看點

WPF 使用 Resharper 更改命名空間後生成檔案引用找不到的命名空間

在 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
{

}           
上一篇: Python檔案
下一篇: 檔案查找