【问题标题】:error : MSB4803: The task "ResolveComReference" is not supported on the .NET Core version of MSBuild错误:MSB4803:.NET Core 版本的 MSBuild 不支持任务“ResolveComReference”
【发布时间】:2020-10-16 01:35:52
【问题描述】:

我在VS2019做了一个项目。我在 .NET Core 和 .NET Framework 中有相同的项目。我在我的项目中使用了 COM 引用。我想将这些项目迁移到 Pi4。 一个简单的 Hello World 项目 (.NET Core) 在 Pi4 机器上成功运行。但是,当我尝试运行我的项目(.NET core 或 .NET Framework)时,它无法在 Pi4 上运行。它说不支持 COM。

在 Google 中寻找解决方案后,我尝试在 Windows 环境中使用 MSBuild 构建项目。我在这里也看到了类似的错误。错误是:错误:MSB4803:.NET Core 版本的 MSBuild 不支持任务“ResolveComReference”。请使用 .NET Framework 版本的 MSBuild。

.NET Framework 项目也给出了类似的错误。 错误 MSB4028:无法从“ResolvedFiles”参数中检索“ResolveComReference”任务的输出。对象与目标类型不匹配。

有人有类似的问题吗?

【问题讨论】:

  • COM 不适用于任何 Unix 风格,您不能使用该库。
  • @Hans。看来你的说法是真的。谢谢。
  • @jdweng,你能解释一下如何调用 MSBuild.exe。这句话我没看懂。尝试通过从 Visual Studio 开发人员命令提示符调用 MSBuild.exe 来构建项目,因为这使用 MSBuild 的 .NET Framework 版本。我在 developercommand promt 上给出了命令 dotnet publish。我应该给出哪个命令?
  • 使用 -detailedSummary 选项,该选项将提供所有信息,然后您可以找到实际导致错误的原因。

标签: c# .net visual-studio raspberry-pi visual-studio-2017


【解决方案1】:

https://github.com/microsoft/msbuild/issues/3986

根据上面的链接。微软员工表示近期无法给出解决方案。

【讨论】:

  • 当然不是,你说的是在 Linux 上使用 COM 组件,如果没有虚拟机,这永远不会发生。
【解决方案2】:

将项目设置为 x86 以便他们构建互操作,创建的互操作仍然无法在 x64 运行时中使用。

将 COM 引用添加到 Core 项目,构建它,您将在 bin/x86/core/debug 文件夹中获得一个 Interop.YourCom。

移除 COM 引用,重新添加 Interop,它会被放入 Assemblies Dependencies,MSBuild 就可以工作了。

我的 MSB4803 来自 WIXInstaller 项目,用于 ADOX 和 Microsoft.Office.Interop.Access.Dao

【讨论】:

  • 无法在 Linux 上运行,那么使用 .net core 有什么意义呢?
  • @Isma 你希望能够在 linux 上使用 COM 库吗?
  • 不,那是不可能的(好吧,也许可以使用 wine 或虚拟化来完成),我只是指出使用 .net core 和 com 引用并没有那么有用,但实际上使用 .net 5 可以做到。
  • 没有葡萄酒或虚拟化,任何 COM 都无法在 Linux 上运行。 OP 还制作了一个存在相同问题的系统的 .NET FW 版本,对他来说,即使他们正在推送到 PI,它也是跨操作系统的。
猜你喜欢
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多