我正在研究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个错误但是它会导致这个其他错误。
在我的机器上重现问题后,我发现了这个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/
但可能还有其他解决方案。