[C# 4.6 в VS 2017]
В настоящее время мы переводим наш Csproj из старого формата в новый (очевидно) и сталкиваемся с странной проблемой.
Один проект использует сборку Microsoft.Office.Interop.Excel. В какой-то момент мы манипулируем атрибутами диапазона Excel следующим образом:
public static void ApplyGradient(Range rng)
{
rng.FormatConditions[1].ColorScaleCriteria[1].FormatColor.TintAndShade = 0;
}
При переходе к сборке из VS мы наблюдаем разные подписи Microsoft.Office.Interop.Excel в проектах Старый и новый. Вот что мы видим:
dynamicobjectРезультатом является проблема компиляции в новой версии csproj, потому что ColorScaleCriteria явно не понимается как свойство object.
Мы попробовали несколько действий, например, добавили зависимость System.Dynamic.Runtime в наш проект, но это ничего не помогло.
Любая помощь будет принята с благодарностью. Большое спасибо!





Вероятно, через два с лишним года это больше не актуально, но для людей, которые сталкиваются с той же проблемой:
Вам необходимо удалить ссылку NuGet на Bundle.Microsoft.Office.Interop / Microsoft.Office.Interop.Excel.
Добавьте ссылку COM на Microsoft Excel 16.0 Object Library и установите Copy Local и Embed Interop Types на Yes.
Или вы можете просто добавить это в свой файл .csproj:
<ItemGroup>
<COMReference Include = "Microsoft.Office.Excel.dll">
<WrapperTool>tlbimp</WrapperTool>
<VersionMinor>9</VersionMinor>
<VersionMajor>1</VersionMajor>
<Guid>00020813-0000-0000-c000-000000000046</Guid>
<Lcid>0</Lcid>
<Isolated>false</Isolated>
<EmbedInteropTypes>true</EmbedInteropTypes>
<Private>true</Private>
</COMReference>
</ItemGroup>
Получил решение из этой ветки: https://stackoverflow.com/a/59138607