Visual Studio无法在设计模式下加载本机dll

问题描述 投票:3回答:2

我有一个C#WPF应用程序,该应用程序使用DllImport加载本机C dll。 DLL函数映射到C#类。

WPF设计器尝试加载DLL,因为窗口的ViewModel构造函数调用了本机函数,但找不到DLL。

我已将DLL复制到输出目录,并且应用程序运行良好,可以调试并逐步进入DLL,只是设计者抱怨,有时会挂起Visual Studio。

我尝试将Dll放在我的项目目录和obj目录中都无济于事。

Visual Studio 2012在哪里尝试从中加载本机dll。

c# c wpf visual-studio dll
2个回答
2
投票

我在包装了一些旧C ++库代码的Wrapper C ++ / CLI DLL中遇到此错误,我在下面的链接中找到了一些信息。我查看了AppData \ Local \ Microsoft \ VisualStudio \ 12.0 \ Designer \ ShadowCache中的C:驱动器,发现VisualStudio正在将Wrapper DLL复制到一系列临时文件夹中,而不是将其复制到本机C ++ DLL中。我通过运行“所有”实用程序进行了确认,并在ShadowCache文件夹中的文件夹内看到了我的DLL副本的成批文件,这些文件夹都没有本机DLL。

仅为了利用Visual Studio的设计器视图而必须创建特殊的流程,脚本或批处理文件,这是很可惜的,但是据我所知,没有很好的解决方法。

我所做的是在C:驱动器上创建一个文件夹,其中包含我当前使用的每个本机DLL,或者最终可能会用C ++ / CLI实现包装,并将该文件夹添加到我的Environment PATH语句中。在此更新之后,我没有引发异常。

Why does the WPF designer fail to load libraries that call into unmanaged DLLs?


0
投票

您总是可以在您的类中创建一个“ Intialize()”方法,并将有问题的代码从构造函数移至初始化程序。当您在运行时实例化该类时,您当然会调用Initialze()方法,但是在XAML中,代码不会运行。

© www.soinside.com 2019 - 2024. All rights reserved.