0

私はOpenXmlSdkTools v2.5の調査を行っており、OpenXmlSdkTools.Core.DLL内でスニーク ピークを取得し、それを ac# Project with ILSpyとして保存しました。

この質問はアクティブですが、発生した問題をすばやく再現する方法としてOpenXmlSdkTools.Core.DLLがあります。

単一のクラス ライブラリ プロジェクトをコンパイルしようとすると、アセンブリ 'System.Xaml' への参照が見つからないという 2 つのエラーが発生します。例えば:

タイプ 'System.Windows.Markup.IQueryAmbient' は、参照されていないアセンブリで定義されています。アセンブリ 'System.Xaml への参照を追加する必要があります

タイプ 'System.Windows.Markup.IUriContext' は、参照されていないアセンブリで定義されています。アセンブリ 'System.Xaml への参照を追加する必要があります

だから私は参照を追加しました。

その後、私は最後のコンパイルエラーであると思っていることに行き詰まっており、それを理解できません。

デリゲート型 C:\TFS\ABC\src\OpenXmlSdkTool.Core\DocumentFormat.OpenXml.Tools\ApplicationExtensions.cs 10 ではないため、匿名メソッドを「System.Delegate」型に変換できません

コードは次のとおりです。

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参照を追加したことで、この問題が発生したと思いますか? また、Core.DLL がクラス ライブラリ プロジェクトであり、ILSpy がそれを csproj ファイルに含めていない場合、なぜ Xaml 参照を追加する必要があるのでしょうか。

ここで同じエラーで他のすべての質問を見てきましたが、どれも実際には役に立ちませんでした。

アップデート

プロジェクトへの参照として System.Xaml.dll を追加する場合。インターフェイスはそこで宣言されています。これがドキュメントです。

Xaml dll を追加すると、最初の 2 つのエラーは解決されますが、この他のエラーが発生します。

4

1 に答える 1

2

私のマシンで問題を再現した後、これを見つけましたhttp://staceyw1.wordpress.com/2007/12/22/they-are-anonymous-methods-not-anonymous-delegates/ ( Convert this delegate to an anonymousから参照)メソッドまたはラムダ)。

Action にキャストを追加すると、問題が解決しました

application.Dispatcher.Invoke(DispatcherPriority.Background, (Action)delegate
        {
        });

しかし、おそらく他の解決策があります。

于 2013-08-31T13:18:08.473 に答える