c# - 项目名称导致命名空间混淆
问题描述
我有几个 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。除了更改命名空间之外,我该如何解决这个问题,这是出于某种原因我不希望这样做(作为较大库的一部分,我想要一致的命名空间)。我尝试了外部别名,但这没有帮助。
解决方案
推荐阅读
- gulp - 另一个 ParseError: 'import' 和 'export' 可能只出现在 'sourceType: module' 中:(
- python - 熊猫:分组列出
- javascript - 有没有办法找到所有在其样式中使用视口单元的 HTML 元素?
- python-3.x - 如何自动将 url 更改为“&page=1”、“&page=2”、“&page=3”等
- java - 如何在 Java 中获取类的 TypeTag
- c# - 如何加快二进制读/写
- jquery - jquery datatables 不更新数据
- java - 使用自定义 JComponent 的 ComboBoxEditor 接口,并允许编辑和显示列表
- r - 如何在 R 中编写代码来对相似行值的列值进行排序?
- python - scrapy.core.engine DEBUG: 爬取 (200) Scrapy 框架