c# - 当使用管理包装器取消管理 C++ DLL 时,.net 是否创建任何临时 C# 文件

标签 c# c++ .net dll

通常当我们需要在C#程序中使用原生C++ DLL时,写一个manage wrapper是实现它的方式。 在这样的程序中,如果我在 DLL 函数调用上按 F12(转到函数定义),它将转到一个 C# 文件,该文件看起来所有函数都在前向声明。我检查了这个文件的位置,它存在于 Windows 临时目录中。

所以我的问题是,当我们在 C# 程序中通过管理包装器使用 C++ 非管理 DLL 时,.NET 框架(或任何其他组件)是否会创建任何与 DLL 中的接口(interface)类相关的临时 C# 类?

最佳答案

没有“临时 C# 文件”。如果您使用 Go to Definition 并且 IDE 只有该定义的程序集引用,那么它无法找到该定义的源代码文件。因此它自动从引用程序集中的元数据中生成一个。这看起来与源代码文件非常相似,但当然没有任何注释,也没有类的代码。它无法编译。它也在 C# 中,即使原始程序集是从 C++/CLI 或 VB.NET 代码创建的。

不错的功能,但不要将其混淆。如果您希望 IDE 将您带到实际的源代码文件,那么您需要该库的项目引用,而不是程序集引用。

关于c# - 当使用管理包装器取消管理 C++ DLL 时,.net 是否创建任何临时 C# 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24753786/

相关文章:

C#:读取由附加换行符分隔的文本文件

c# - 如何让一个Windows窗体始终显示在最上面?

c++ - 使用 vector <SuperSetofT>中的元素初始化 vector <T>(映射函数?)

.net - ORM 还是直接 SQL?

.net - 在 .net 中绘制科学数据

c# - 如何在主布局文件中渲染部分 View 部分

c# - 为什么在 finally 部分重置此变量时,在 try block 中返回变量不会更改返回值的值?

C++ CreateProcess - 系统错误 #2 找不到文件 - 我的文件路径有什么问题?

c++ - 开始为 jack-audio 开发

c# - 引用项目时缺少项目依赖项