Microsoft.Office.Core 在未引用的程序集中定义。您必须添加对装配办公室的引用,Version=15.0.0.0

Microsoft.Office.Core is defined in an assembly that is not referenced. You must add a reference to assembly office, Version=15.0.0.0

我正在使用 Visual Studio 2022。我创建了一个 .net 6 项目。 我添加了 COM 引用:Microsoft Excel 16 Object Library (Microsoft.Office.Interop.Excel) 和 Microsoft Office 16 Object Library (Microsoft.Office.Core).

以下 Excel 互操作代码行引发错误 at SetElement(),无法构建:

Chart c = (Chart)wbSheets.Application.Workbooks[1].Charts.Add();
chart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementChartTitleAboveChart);

Microsoft.Office.Core... is defined in an assembly that is not referenced. You must add a reference to assembly office, Version=15.0.0.0, ..., PublicKeyToken=71e9bce111e9429c

一个非常奇怪的错误,Office 16 (Office 2016) 库需要引用 Office 15 (Office 2013)。

COM 引用和 c# 代码的完全相同的步骤在 .NET 4.8 Framework 中完美运行。所以这个问题特定于 .NET 6(可能是 .NET 5 和所有以前的 .NET Core 版本)。

使用 nuget 命令 Install-Package MicrosoftOfficeCore -Version 15.0.0 安装参考并手动删除以前的 v16 参考,确实解决了代码构建错误。但是现在该依赖项有一个黄色三角形警告,该依赖项是针对 .NET 4.6-4.8 Framework 的,可能与 .NET 6 不兼容。

尽管如此,代码似乎工作正常并且生成了 Excel 文件。

但我会 post 更好地解决这个问题。

更好的解决办法是去:

Solution Explorer > project > Dependencies > COM > select Microsoft.Office.Core > properties pane.

最后一个属性是Wrapper Tool,默认值为tlbimp

输入 primary 作为值,单击其他地方更新字段,问题就解决了。不需要 nuget 包。

从这里(最底部 post)找到了这个晦涩的解​​决方案: https://github.com/dotnet/project-system/issues/5735