我使用Visual Studio 2008,.NET 3.5 SP1,並具有以下模塊的測試應用程序:使用#1 爲什麼WPF設計器無法加載調用非託管DLL的庫?
- 一個C++ DLL
- 一個C++/CLI DLL使用#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
錯誤是:「Assembly'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設計器尋找動態的地方有關庫。
我不確定解決方法,但我相信VS/WPF Designer將程序集複製到臨時位置並從那裏加載它們。所以它可能不會複製你的C++ DLL。 – CodeNaked 2011-05-17 20:33:52
我認爲你非常接近正確,但並不完全。程序集(甚至是非託管程序)實際上都是複製的,但是像Rick在下面說的那樣,WPF設計器無法找到它們,除非它們位於系統路徑中的某個位置。 – 2011-05-17 20:52:42