Немного истории:
Я получил проблему компиляции с этими ошибками:
1.Предопределенный тип 'Microsoft.CSharp.RuntimeBinder.Binder'не определено или не импортировано
2. Один или несколько типов, необходимых для компиляции динамического выражения, не найдены.Вам не хватает ссылок на Microsoft.CSharp.dll и System.Core.dll?
Поэтому я нашел эту статью и сослался на библиотеку Microsoft.CSharp: C # 4.0 и .Net 3.5
К моменту: Класс, который я показывал, по сути, Mocks объектную модель Excel, и я скопировал этот класс из одного проекта в другой (я не могу ссылаться на другойпроект как его фактически отдельный проект, плюс он вызвал бы циклическую зависимость) Я обнаружил, что метод расширения Returns был указан в intellisense, но я получил «Не удалось разрешить символ» при компиляции.Хотя посещение Определения было одинаковым в обоих классах / проектах.Чтобы обойти это изначально, я выполнил закомментированные строки:
public static Range Cell
{
get
{
var mockCell = Substitute.For<Range>();
mockCell.Address.Returns("$A$1");
mockCell.Formula = "=1+1";
mockCell.ToString().Returns(mockCell.Formula.ToString());
//mockCell.ToString().Returns(info => mockCell.Formula.ToString());
//SubstituteExtensions.Returns(mockCell.ToString(), mockCell.Formula.ToString());
mockCell.Worksheet.Returns(Sheet);
mockCell.Worksheet.Name.Returns(MockSheetName);
return mockCell;
}
}
Эта точка немного напоминает красную сельдь, но удаление библиотеки Microsoft.CSharp фактически позволило успешно разрешить метод расширения Returns.Затем я обнаружил, что удаление Microsoft.CSharp dll решило мою проблему , все просто сработало, объект mockSheet имеет все свои свойства и мог успешно выполняться без ошибки «Невозможно выполнить привязку во время выполнения для пустой ссылки».
Да, и совет для всех типов насмешек, будьте особенно внимательны, чтобы установить это: