首页 文章

无法在XAML中创建xmlns对其他项目的引用

提问于
浏览
5

我有一个像这样定义的WPF项目:

MyApp.sln
  MyAppWPF
  MyApp.Domain

在我的MyAppWPF项目中的一个xaml文件中,我正在尝试引用MyApp.Domain项目中定义的类 . 我在MyAppWPF中有一个 project reference 到MyApp.Domain . 我正在尝试创建这样的引用:

<Window x:Class="MyAppWPF.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyApp.Domain;assembly=MyApp.Domain"
    Title="Window1" Height="305" Width="485">
    <Window.Resources>
       <local:MyClass x:Key="mine" />
    </Window.Resources>
</Window>

我得到一个错误,说无法找到程序集,但是我可以在后面的代码中创建我想要引用的类的实例,所以我知道我已正确引用它 .

我该怎么做呢?我是否需要强名称,或直接引用dll而不是使用项目引用?

5 回答

  • 0

    如果您正在动态编译松散的XAML,则只需要放置 assembly=MyApp.Domain .

    如果您最初只是构建一次XAML,请排除该令牌,只需说出 xmlns:local="clr-namespace:MyApp.Domain" .

  • 2

    可以有任何帮助吗?

    Visual Studio 2008 (RTM) WPF Designer Could Not Load Assembly or Dependency

    我假设您使用的是Visual Studio 2008.如果您使用的是Visual Studio 2005,这是代号为“Cider”的XAML设计器中的已知问题,该问题包含在“WPF和WCF的Visual Studio 2005扩展”中 .

  • 1

    检查是否

    • MyClass的完全限定名称是MyApp.Domain.MyClass

    • MyClass有一个默认的公共构造函数(没有参数),因此XAML可以实例化它 .

  • 0

    如果它对任何人有帮助,我只需在引用包含项目本身的命名空间声明的末尾添加 ;assembly= 就可以解决我的问题 . 例如:

    xmlns:local="clr-namespace:YourProjectNameSpace;assembly="
    
  • 1

    如果XAML没有松动(在程序集中编译(DLL / EXE))
    确保程序集具有对您要查找的程序集的引用
    (右键单击项目 - >添加引用...) .

    如果XAML松散,请确保将要查找的程序集复制到运行exe的同一目录中 .

相关问题