c# - 如果缺少 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 文件。如何解决此编译错误?
解决方案
当我查看文件夹的 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 Types
为False
。另外,请不要忘记确保设置Copy Local
为True
. 要检查它,请打开 xxx.csproj 文件并确保您已添加
<EmbedInteropTypes>False</EmbedInteropTypes>
.
另外,请Interop.SREYELINKLib.dll
不要SREYELINKLib.dll
在你的项目中使用。
希望它可以帮助你。
推荐阅读
- c# - 从当前在 android 设备上播放的任何声音中获取数据?
- api - 在 SPFx 上的 MS Graph API 中转换文件返回未定义
- autodesk-forge - Forge 身份验证:如何在刷新时处理 GatewayTimeout
- python - tensorflow 和 keras:不支持无值
- dotnetnuke-9 - DotNetNuke 9.4.4 - 未注册“DotNetNuke.UI.Modules.IModuleControlPipeline”类型的服务
- sql - SQL:尝试将根据其他 2 列计算的总行加起来
- python - SQL评分关系的最佳解决方案
- mongodb - 如何在 MongoDB 聚合中过滤 $match 中最近 36 个月的文档
- r - 子集R中的列表向量
- reactjs - 为什么这个日期总和没有在反应中正确显示?