Mat*_*owe 5 c# wpf c++-cli visual-studio-2008
我正在使用Visual Studio 2008,.NET 3.5 SP1,并拥有一个包含以下模块的测试应用程序:
当我尝试使用#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
Run Code Online (Sandbox Code Playgroud)
错误是:"找不到程序集'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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我修改C++/CLI程序集,删除它对C++ DLL的调用并重建所有内容,设计器就会停止抱怨并加载C++/CLI程序集而不会抱怨.
我怀疑这个问题与WPF设计者寻找动态库的地方有关.
由于Visual Studio设计器将程序集复制到临时位置,但不复制非托管依赖项,因此可能会遇到此问题.
最简单的解决办法,虽然不理想,是添加含有非托管的依赖关系到一个文件夹PATH的环境变量,然后开始DevEnv.exe与PATH.
你可以这样做:
这个解决方案的问题是,当重建非托管依赖项时,Visual Studio会"挂起"它们或者不使用新的依赖项,因此在使用设计器正确完全重建所有内容之后,最终需要退出并重新启动Visual Studio这可能有点痛苦.
| 归档时间: |
|
| 查看次数: |
4741 次 |
| 最近记录: |