首页 > 解决方案 > 项目名称导致命名空间混淆

问题描述

我有几个 WPF 项目由于错误The type or namespace name 'X' does not exist in the namespace而无法编译。这是一个最小的可重复样本。

有一个名为Wpf.Lib的类库,我在其中定义了一个名为 WindowBase 的类。

using System.Windows;

namespace Wpf.Lib.Controls
{
   public class WindowBase : Window
   {
   }
}

然后,我有一个名为Samples.Wpf.Demo的应用程序项目,其中我引用了Wpf.Lib

在此处输入图像描述

我想WindowBase成为这个项目中我的窗户的基础。我有一个名为MainWindow. C#代码如下:

using Wpf.Lib.Controls;

namespace Samples.Wpf.Demo
{
   public partial class MainWindow : WindowBase
   {
      public MainWindow()
      {
         InitializeComponent();
      }
   }
}

此窗口的 XAML 如下所示:

<controls:WindowBase
        xmlns:controls="clr-namespace:Wpf.Lib.Controls;assembly=Wpf.Lib"
        x:Class="Samples.Wpf.Demo.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:Samples.Wpf.Demo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>

    </Grid>
</controls:WindowBase>

我得到的错误是:

MainWindow.g.cs(42,43,42,46):错误 CS0234:命名空间“Samples.Wpf”中不存在类型或命名空间名称“Lib”(您是否缺少程序集引用?)

MainWindow.g.cs 看起来像这样:

using Wpf.Lib.Controls;

namespace Samples.Wpf.Demo {

    /// <summary>
    /// MainWindow
    /// </summary>
    public partial class MainWindow : Wpf.Lib.Controls.WindowBase, System.Windows.Markup.IComponentConnector {
    }
}

我认为编译器会感到困惑,因为它找到了 Wpf.Lib,然后它有 Samples.Wpf 并假设有一个 Samples.Wpf.Lib。除了更改命名空间之外,我该如何解决这个问题,这是出于某种原因我不希望这样做(作为较大库的一部分,我想要一致的命名空间)。我尝试了外部别名,但这没有帮助。

标签: c#.netwpfvisual-studio

解决方案


推荐阅读