我有几个WPF项目由于错误而无法编译名称空间中的类型或名称空间名称'X'不存在。这是最小可重现的样品。
有一个名为 Wpf.Lib 的类库,其中定义了一个名为WindowBase的类。
using System.Windows;
namespace Wpf.Lib.Controls
{
public class WindowBase : Window
{
}
}
然后,我有一个名为 Samples.Wpf.Demo 的应用程序项目,其中引用了 Wpf.Lib 。
我希望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别名,但这无济于事。