2013-10-16 82 views
1

我們有一個託管的dll實現了從Cpp命名空間中的HwndHost派生的公共參考類。 我們構建了名爲mydll10.dll的x86版本和名爲mydll10_x64.dll的x64版本。 我們在xaml頁面的WPF應用程序中使用Cpp命名空間。我們可以使用'$(平臺)'條件在項目中添加適當的參考。 但是我們應該在x86的xmlns:c =「clr-namespace:Cpp;程序集= UvpProInspectWpf10_x64」x64ns:c =「clr-namespace:Cpp;程序集= UvpProInspectWpf10」的同一頁中使用x64 exe。 在xaml中不可能使用任何#if #then #else。XmlnsDefinition在一個託管的C++ dll

如果CPP的命名空間將是一個C#項目,解決方案可能是在寫

`myurl:"http://schemas.me.com/wpf/" 
#if x64 
[assembly: XmlnsDefinition(myurl, "UvpProInspectWpf10_x64")] 
#else 
[assembly: XmlnsDefinition(myurl, "UvpProInspectWpf10")] 
#endif 

Assembly.cs文件,並在XAML定義

xmlns:c=" http://schemas.me.com/wpf/」 

。 我無法找到如何在託管C++項目中執行這些程序集定義。 這可能嗎? 當然,我們可以打破我們的命名規則... 謝謝

回答

1

找到它。 將對System.Xaml.dll的引用添加到C++託管項目。 添加AssemblyInfo.cpp文件,

using namespace System::Windows::Markup; 
[assembly:XmlnsDefinition("http://schemas.me.com/wpf/", "Cpp")]; 

然後你可以在XAML頁面

xmlns:c=" http://schemas.me.com/wpf/」 

使用與項目指的是正確的x86或x64版本

相關問題