Visual Studio 错误:MSB4803:MSBuild的.NET核心版本不支持任务“ResolveComReference

1qczuiv0  于 2023-02-13  发布在  .NET
关注(0)|答案(5)|浏览(890)

我在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"任务的输出。对象与目标类型不匹配。
有人有类似的问题吗?

7y4bm7vi

7y4bm7vi1#

https://github.com/microsoft/msbuild/issues/3986
根据上面的链接。微软的员工说他们不能在短期内给予解决方案。

pbpqsu0x

pbpqsu0x2#

将项目设置为x86以生成互操作,但创建的互操作仍无法在x64运行时中使用。
将COM引用添加到Core项目中,构建它,您将在bin/x86/core/debug文件夹中获得Interop.YourCom。
移除COM引用,然后重新添加Interop,它将被放入程序集依赖项中,MSBuild将正常工作。
我的MSB 4803来自一个WIXInstaller项目,用于ADOX和Microsoft.Office.Interop.Access.Dao

6xfqseft

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,没有解决该问题的方法。

ewm0tg9j

ewm0tg9j4#

出于礼貌,我不会说我喜欢这个错误信息或它显示的如何修复它的链接。- );
我想通了,因为有很多答案对分享我的没有帮助。我所做的是更新你的命令来强制使用msbuild。

dotnet msbuild -v:normal "FullOrRelativePathTo\MyProject.csproj" -p:Configuration=RELEASE

如果失败,请尝试:

"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" "PathTo\Project.csproj" /p:Configuration=RELEASE

相关问题