Я изучаю OpenXmlSdkTools v2.5 и заглянул внутрь OpenXmlSdkTools.Core.DLL и сохранил его как проект c# с помощью ILSpy.
Пока этот вопрос активен, вот OpenXmlSdkTools.Core.DLL как способ чтобы быстро воспроизвести проблему, с которой я столкнулся.
Когда я пытался скомпилировать проект библиотеки одного класса, я получаю две ошибки, связанные с отсутствующей ссылкой на сборку «System.Xaml». например:
Тип «System.Windows.Markup.IQueryAmbient» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку System.Xaml
Тип «System.Windows.Markup.IUriContext» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку System.Xaml
Поэтому я добавил реф.
После этого я застрял на том, что, я надеюсь, является последней ошибкой компиляции, и я не могу понять это.
Невозможно преобразовать анонимный метод в тип System.Delegate, поскольку он не является типом делегата C:\TFS\ABC\src\OpenXmlSdkTool.Core\DocumentFormat.OpenXml.Tools\ApplicationExtensions.cs 10
Вот код:
using System;
using System.Windows;
using System.Windows.Threading;
namespace DocumentFormat.OpenXml.Tools
{
public static class ApplicationExtensions
{
public static void DoEvents(this Application application)
{
application.Dispatcher.Invoke(DispatcherPriority.Background, delegate
{
});
}
}
}
Я застрял и озадачен тем, что это декомпилированная DLL, которую легко перекомпилировать. Вы думаете, что я добавил ссылку на Xaml, что вызвало эту проблему? И зачем мне нужно добавлять ссылку на Xaml, если Core.DLL — это проект библиотеки классов, а ILSpy не включил его в файл csproj?
Я просмотрел все остальные вопросы здесь с той же ошибкой, но ни один из них не помог.
Обновлять
Когда вы добавляете System.Xaml.dll в качестве ссылки на свой проект. Там интерфейс объявлен. Вот документ.
Итак, теперь я нахожусь в Catch22, если я добавлю dll Xaml, он решит первые 2 ошибки, но затем вызовет эту другую ошибку.