I'm working on a .net core web app (targeting net461).
The app needs to reference a COM dll.
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): error MSB4062: The "Microsoft.Build.Tasks.ResolveComReference" task could not be loaded from the assembly 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?
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.
WORKAROUND:
- Reference the COM dll and rebuild. Visual Studio will generate an interop
dll. It will be named something like Interop.MyComDLL.dll. It is found in the build output directory.
- Copy the generated Interop dll to somewhere in the application (I just
used a /dlls folder at the root application level).
- Remove the COM dll reference.
- Add a direct reference (Dependencies > Add Reference... > Browse in Visual Studio) to the Interop dll
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…