使用anon-method和委托错误重新编译OpenXmlSdkTool.Core DLL

问题描述 投票:0回答:1

我正在研究qazxsw poo,并在OpenXml Sdk Tools.Core.DLL中偷看并将其保存为cazxswpoi的c#项目。

虽然这个问题很活跃,但是OpenXmlSdkTools v2.5是一种快速重现我遇到的问题的方法。

当我尝试编译单个类库项目时,我得到两个关于程序集'System.Xaml'的missng引用的错误。例如:

“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

这是代码:

ILSpy

我陷入困境并且困惑于它的反编译DLL应该很容易再次重新编译。你认为我添加Xaml引用会导致这个问题吗?如果Core.DLL是类库项目并且ILSpy没有将它包含在csproj文件中,为什么我需要添加Xaml引用?

我在这里查看了所有其他问题并出现了相同的错误,但没有一个真的有帮助。

更新

当您添加System.Xaml.dll作为项目的参考时。接口在那里声明。这是OpenXmlSdkTools.Core.DLL

所以现在我在Catch22中,如果我添加Xaml dll它将解决前2个错误但是它会导致这个其他错误。

c# delegates decompiling anonymous-methods
1个回答
2
投票

在我的机器上重现问题后,我发现了这个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 { }); } } } (引自doc)。

向Action添加强制转换解决了这个问题

http://staceyw1.wordpress.com/2007/12/22/they-are-anonymous-methods-not-anonymous-delegates/

但可能还有其他解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.