我正在研究.net核心网络应用(定位net461)。 该应用程序需要引用COM DLL。
我添加了COM引用,应用程序仍构建在我的开发机器上。 但是,在构建服务器上,它无法使用此错误构建:
C:\ Program Files(x86)\ dotnet \ sdk \ 2.0.0 \ Microsoft.Common.CurrentVersion.targets(2604,5):错误MSB4062:“Microsoft.Build.Tasks.ResolveComReference”任务无法从程序集Microsoft.Build.Tasks.Core
加载经过一番搜索,似乎这是一个非常罕见的错误。 任何人都知道错误是什么和/或如何解决它?
更新:似乎dotnet CLI不支持COM引用。 Visual Studio直接在后台使用msbuild,但在构建服务器上,我使用的是dotnet CLI命令。
替代方法:
答案 0 :(得分:0)
如果您尝试使用与构建服务器上相同的命令构建它,它也应该在开发人员计算机上失败,例如。
dotnet.exe build Solution.sln --configuration Release --no-incremental
使用msbuild的VS构建解决方案,它的方式不同。
答案 1 :(得分:0)
我的建议是使用动力学进行任何COM互操作,如果您希望将来更轻松地进行更改,请创建一个具有所有您需要访问的COM属性和方法的接口。
创建一个实现接口的类,该类作为构造函数的一部分动态创建COM对象。然后实现每个方法和属性,以访问您创建的动态对象。
这应该删除所有构建时间依赖性,为其余代码提供一个接口,并在需要时提供一种退出COM的简便方法。
您可能还会发现Rick Strahl在.Net Core中为COM撰写的文章有用吗?
https://weblog.west-wind.com/posts/2019/Jan/22/COM-Object-Access-and-dynamic-in-NET-Core-2x
希望这会有所帮助:)