项目名称导致名称空间混乱

时间:2019-04-18 15:07:34

标签: c# .net wpf visual-studio

我有几个WPF项目由于错误而无法编译名称空间中的类型或名称空间名称'X'不存在。这是最小可重现的样品。

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

using System.Windows;

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

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

enter image description here

我希望WindowBase成为此项目中Windows的基础。我有一个名为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”中不存在“库”(您是否丢失了   组装参考?)

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。除了更改名称空间外,我如何解决此问题,出于某些原因,我不愿意这样做(属于较大的库,并且我需要一致的名称空间)。我尝试了extern别名,但这无济于事。

0 个答案:

没有答案