我正在开发.net核心Web应用程序(定位为net461)。
该应用程序需要引用COM dll。

我添加了COM引用,该应用程序仍在我的开发机上构建。
但是,在生成服务器上,它无法生成此错误:

C:\ Program Files(x86)\ dotnet \ sdk \ 2.0.0 \ Microsoft.Common.CurrentVersion.targets(2604,5):错误MSB4062:无法从Windows XP加载“Microsoft.Build.Tasks.ResolveComReference”任务程序集Microsoft.Build.Tasks.Core

经过一番搜索,这似乎是一个非常罕见的错误。
任何人都知道错误是什么和/或如何解决?

更新:好像dotnet CLI不支持COM引用。 Visual Studio在后台直接使用msbuild,但是在生成服务器上,我使用的是dotnet CLI命令。

解决方法:

  • 引用COM dll并重新生成。 Visual Studio将生成一个互操作
    dll。它将被命名为Interop.MyComDLL.dll之类的名称。在构建输出目录中找到它。
  • 将生成的Interop dll复制到应用程序中的某个位置(我只是
    在根应用程序级别使用了/ dlls文件夹)。
  • 删除COM dll引用。
  • 向Interop dll
  • 添加直接引用(依赖关系>添加引用...>在Visual Studio中浏览)

    最佳答案

    如果您尝试使用与构建服务器上相同的命令来构建它,那么它在开发人员计算机上也会失败。

    dotnet.exe build Solution.sln --configuration Release --no-incremental
    

    VS使用msbuild构建解决方案,这是另一种方式。

    10-08 11:47
    查看更多