首页 > 解决方案 > 如果缺少 dll 文件,如何在 C# 项目中使用 interop.x.dll 文件?

问题描述

我是 C# 编程的菜鸟。我目前正在尝试在 Visual Studio 中运行 C# 项目。在构建项目时,我找不到特定的程序集或目录文件。在 .csproj 文件中,库的 com 目录存在:-

<COMReference Include="SREYELINKLib">
  <Guid>{F8FB49B9-9448-4045-BB1F-9DEA1F98B7E6}</Guid>
  <VersionMajor>1</VersionMajor>
  <VersionMinor>2</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>tlbimp</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>

当我查看文件夹的 bin 时,我得到文件 Interop.SREYELINKLib.dll。但是,项目中不存在 .dll 文件。如何解决此编译错误?

标签: c#visual-studiomsbuild

解决方案


当我查看文件夹的 bin 时,我得到文件 Interop.SREYELINKLib.dll。但是,项目中不存在 .dll 文件。如何解决此编译错误?

SREYELINKLib意味着Interop.SREYELINKLib.dll。它们代表同一个文件。是它的全名,Interop.SREYELINKLib.dll如下图所示。所以当你遇到这种情况时,这不是错误,这是正常的。

在此处输入图像描述

在构建项目时,我找不到特定的程序集或目录文件。在 .csproj 文件中,库的 com 目录存在:-

首先,我认为您遇到了系统找不到特定com引用的构建错误。如果是这样:

从 Net 4.0 开始,微软就加入EmbedInteropTypes了 VS。并且EmbedInteropTypes=true意味着将DLL中使用的嵌入代码直接嵌入到项目输出文件中,相当于将com引用直接嵌入到project.dll或project.exe中,这样就不用输出com引用了,从而优化了项目.

但是在某些特殊情况下,由于某些原因,当嵌入互操作类型时,互操作层会失败。您的代码无法访问它们,只能手动添加它们 ( EmbedInteropTypes=False)。你可以看到这个

所以请点击SREYELINKLib中的Solution Explorer,然后将 设置Embed Interop TypesFalse。另外,请不要忘记确保设置Copy LocalTrue. 要检查它,请打开 xxx.csproj 文件并确保您已添加 <EmbedInteropTypes>False</EmbedInteropTypes>.

另外,请Interop.SREYELINKLib.dll不要SREYELINKLib.dll在你的项目中使用。

希望它可以帮助你。


推荐阅读