我在VS2019中做了一个项目,我在. NET Core和. NET Framework中有相同的项目,我在项目中使用了COM引用,我想将这些项目迁移到Pi4中,一个简单的Hello World项目(. NET核心)在Pi4计算机上成功运行。但是,当我试图运行我的项目(. NET核心或. NET框架)时,它不能在Pi4上运行。它说COM不受支持。
在Google中查找解决方案后,我尝试在Windows环境中使用MSBuild构建项目。我在这里也看到了类似的错误。错误是:错误:MSB4803:MSBuild的. NET核心版本不支持任务"ResolveComReference"。请使用MSBuild的. NET Framework版本。
. NET Framework项目也给出了类似的错误。error MSB4028:无法从"ResolvedFiles"参数检索"ResolveComReference"任务的输出。对象与目标类型不匹配。
有人有类似的问题吗?
5条答案
按热度按时间7y4bm7vi1#
https://github.com/microsoft/msbuild/issues/3986
根据上面的链接。微软的员工说他们不能在短期内给予解决方案。
pbpqsu0x2#
将项目设置为x86以生成互操作,但创建的互操作仍无法在x64运行时中使用。
将COM引用添加到Core项目中,构建它,您将在bin/x86/core/debug文件夹中获得Interop.YourCom。
移除COM引用,然后重新添加Interop,它将被放入程序集依赖项中,MSBuild将正常工作。
我的MSB 4803来自一个WIXInstaller项目,用于ADOX和Microsoft.Office.Interop.Access.Dao
6xfqseft3#
这个问题我偶然遇到过很多次,在不同的项目中也经历过几次,不管是Visual Studio 2019还是2022,构建的版本是什么,除非你是在一个遗留环境中使用旧的MSBuild,COM引用不起作用。在命令行中生成它以了解VS环境中的任何内容是否起作用总是安全的。我不我真的不明白为什么微软让你在VisualStudio环境中进行这些引用,而它们在其他任何地方几乎都不起作用。
有一些变通方法可能有效,也可能无效,但如果您的代码已经指向COM库,则没有太多要做的事情。您可以安装NuGet包,该包将通过构建阶段并删除COM引用。
Install-Package Microsoft.Office.Interop.Excel -Version 15.0.4795.1001
NuGet包在类型级别上有一些差异,您需要修复这些差异(COM引用允许您从单元格值中获取特定类型而不是对象)
在任何情况下,您都需要在服务器中安装COM,没有解决该问题的方法。
ewm0tg9j4#
出于礼貌,我不会说我喜欢这个错误信息或它显示的如何修复它的链接。- );
我想通了,因为有很多答案对分享我的没有帮助。我所做的是更新你的命令来强制使用msbuild。
如果失败,请尝试:
flmtquvp5#
从项目中移除所有COM引用:
"ResolveComReference" is not supported