问题描述
我正在开发一个 .net 核心网络应用程序(针对 net461).该应用程序需要引用一个 COM dll.
I'm working on a .net core web app (targeting net461).The app needs to reference a COM dll.
我添加了 COM 引用,该应用程序仍在我的开发机器上构建.但是,在构建服务器上它无法构建并出现此错误:
I added the COM reference and the app still builds on my dev machine.However, on the build server it fails to build with this error:
C:Program Files (x86)dotnetsdk2.0.0Microsoft.Common.CurrentVersion.targets(2604,5):错误 MSB4062:Microsoft.Build.Tasks.ResolveComReference"任务无法从程序集 Microsoft.Build.Tasks.Core
搜索了一下之后,这似乎是一个非常罕见的错误.任何人都知道错误是什么和/或如何修复它?
After searching a bit, it seems like it's a pretty uncommon error.Anyone know what the error is and/or how to fix it?
更新:似乎 dotnet CLI 不支持 COM 引用.Visual Studio 直接在幕后使用 msbuild,但在构建服务器上,我使用的是 dotnet CLI 命令.
UPDATE: Seems like the dotnet CLI does not support COM references. Visual Studio uses msbuild directly behind the scenes, but on the build server, I was using the dotnet CLI commands.
解决方法:
- 引用 COM dll 并重建.Visual Studio 将生成互操作dll.它将被命名为 Interop.MyComDLL.dll.它位于构建输出目录中.
- 将生成的 Interop dll 复制到应用程序中的某个位置(我只是在根应用程序级别使用了/dlls 文件夹).
- 删除 COM dll 引用.
- 向 Interop dll 添加直接引用(依赖项 > 添加引用... > 在 Visual Studio 中浏览)
推荐答案
如果您尝试使用与构建服务器上相同的命令构建它,它也会在开发人员机器上失败,例如
It should also fail on developer machine if you try to build it using the same command as on build server, e.g.
dotnet.exe build Solution.sln --configuration Release --no-incremental
VS 使用 msbuild 构建解决方案,这是一种不同的方式.
VS building solution using msbuild, it's a different way.
这篇关于.NET Core 构建错误:错误 MSB4062 Microsoft.Build.Tasks.ResolveComReference的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!