Я использую Visual Studio 2008, .NET 3.5 SP1, и у меня есть тестовое приложение со следующими модулями:
- C ++ DLL
- C ++ / CLI DLL, которая использует# 1
- приложение C # WPF, которое использует # 2
Когда я пытаюсь использовать классы из # 2 в качестве ресурсов в WPF XAML, дизайнер не разрешает мне:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lib1="clr-namespace:ClassLibrary1;assembly=ClassLibrary1" <- ERROR
Ошибка: «Сборка« ClassLibrary1 »не найдена. Убедитесь, что вы не пропустили ссылку на сборку. Также убедитесь, что ваш проект и все ссылочные сборки были построены».
Но когда я использую класс из C ++ / CLI DLL в коде основного окна приложения, все работает нормально.Class1 создан, и в своем конструкторе он вызывает C ++ DLL, без проблем.
using ClassLibrary1;
...
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
//use in code-behind
Class1 tmp = new Class1();
tmp.FirstName = "foo";
Title = tmp.FirstName;
}
}
Если я изменяю сборку C ++ / CLI, удаляю ее вызов в C ++ DLL и перестраиваю все, дизайнер останавливаетсяжалуется и загружает сборку C ++ / CLI без жалоб.
Я подозреваю, что эта проблема связана с тем, где дизайнер WPF ищет динамические библиотеки.