Windows phone 8 ILMerge错误Windows Phone 8未解析的程序集引用

Windows phone 8 ILMerge错误Windows Phone 8未解析的程序集引用,windows-phone-8,ilmerge,Windows Phone 8,Ilmerge,我正在尝试使用ILMerge.exe(2.12.0803)合并Windows Phone 8的一些.net程序集。所有组件本身都可以正常工作。我可以成功合并不包含命名空间引用的程序集,如下所示: \ILMerge.exe/lib:“%ProgramFiles(x86)%\Reference 程序集\Microsoft\Framework\WindowsPhone\v8.0” /输出:。\WP8\%1\MathToolbox.dll.\%1\MathBase.dll.\%1\PolyFunctio

我正在尝试使用ILMerge.exe(2.12.0803)合并Windows Phone 8的一些.net程序集。所有组件本身都可以正常工作。我可以成功合并不包含命名空间引用的程序集,如下所示:

\ILMerge.exe/lib:“%ProgramFiles(x86)%\Reference 程序集\Microsoft\Framework\WindowsPhone\v8.0” /输出:。\WP8\%1\MathToolbox.dll.\%1\MathBase.dll.\%1\PolyFunctions.dll

只要我尝试包含使用Windows.NET空间的DLL,如下所示:

\ILMerge.exe/lib:“%ProgramFiles(x86)%\Reference 程序集\Microsoft\Framework\WindowsPhone\v8.0” /输出:。\WP8\%1\MathToolbox.dll.\%1\MathBase.dll.\%1\PolyFunctions.dll .\%1\RemoteTools.dll

我收到以下例外情况:

合并期间发生异常:未解析的程序集引用 不允许:Windows。在 System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNodeAssembly)位于 System.Compiler.Ir2md.GetTypeRefIndex(类型节点类型)位于 System.Compiler.Ir2md.VisitReferencedType(类型节点类型)位于 System.Compiler.Ir2md.VisitClass(类)位于 System.Compiler.Ir2md.VisitModule(模块)位于 System.Compiler.Ir2md.SetupMetadataWriter(字符串调试符号位置) 在System.Compiler.Ir2md.WritePE(模块,字符串 debugSymbolsLocation,BinaryWriter(写入程序)位于 System.Compiler.Writer.WritePE(字符串位置,布尔值 writeDebugSymbols,模块,布尔延迟,字符串 keyFileName,字符串keyName)位于 System.Compiler.Writer.WritePE(编译器参数编译器参数, 位于ILMerging.ILMerge.Merge()的模块 ILMerging.ILMerge.Main(字符串[]args)

读取此异常后,SugilMerge无法找到Windows.Networking程序集。我尝试向ILMERGE添加各种不同的标志,包括:

\ILMerge.exe/lib:“%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.0”/targetplatform:v4,“%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71” /输出:。\WP8\%1\MathToolbox.dll.\%1\MathBase.dll.\%1\PolyFunctions.dll .\%1\RemoteTools.dll


但仍然得到同样的例外。如果有人有任何建议,我将不胜感激。

我认为ILMerge实际上不适用于纯.NET程序集以外的其他程序集,尤其是当Windows Phone 8和WinRT项目使用引用的本机库时,这可能是在“Windows”中找不到的未解析的程序集。

错误表明ILMerge找不到平台的Windows.winmd。在编译Windows Phone或Windows Store项目时,您需要针对两个主要方面进行编译:;平台SDK(WinRT)和.NET SDK。运行在这些程序集上的任何工具都需要这两种工具

除了传递.NET程序集文件夹外,请尝试将“C:\Program Files(x86)\Windows Phone Kits\8.0\Windows Metadata directory”作为lib参数传递


请注意,ILMerge基于较旧版本的CCI(),因此即使在执行上述操作后,可能仍然无法使用与.NET略有不同的WinRT元数据格式。

我也在考虑类似的问题,但我在程序集中使用Windows Phone SDK中的其他名称空间,例如MathBase.dll,尽管不是Windows.xxx名称空间的一部分。我假设所有WP8名称空间都是从同一块布上绘制的,也许不是。我接受你的答案,因为似乎没有其他人有任何额外的反馈。我假设我得到了这个错误,因为我正在引用WP8的本机库,而ILMerge还没有像您建议的那样跟上进度。