2013-03-16 3 views
3

Я пытаюсь объединить некоторые .net-сборки для Windows Phone 8 с помощью ILMerge.exe (2.12.0803). Собственно все сборки работают нормально. Я могу успешно объединить монтирует, которые не содержат ссылки на Windows.Networking пространство имен следующим образом:.Ошибка ILMerge Windows Phone 8 Неразрешенная ссылка на сборку

\ ILMerge.exe/Библиотека: "% ProgramFiles (x86)% \ Reference Сборки \ Microsoft \ Framework \ WindowsPhone \ v8 +0,0" /out:.\WP8\%1\MathToolbox.dll. \% 1 \ MathBase.dll. \% 1 \ PolyFunctions.dll

Как только я пытаюсь включить DLL, которая использует пространство для Windows.Networking следующим образом:

. \ ILMerge.ex e/lib: "% ProgramFiles (x86)% \ Reference Ассембли \ Microsoft \ Framework \ WindowsPhone \ v8.0" /out:.\WP8\%1\MathToolbox.dll. \% 1 \ MathBase.dll. \ % 1 \ PolyFunctions.dll \% 1 \ RemoteTools.dll

Я ПОЛУЧАТЬ следующее исключение:.

исключение произошло во время слияния: Нерешенные ссылка сборки не допускается: Windows. на System.Compiler.Ir2md.GetAssemblyRefIndex (AssemblyNode сборки) в System.Compiler.Ir2md.GetTypeRefIndex (типа TypeNode) в System.Compiler.Ir2md.VisitReferencedType (типа TypeNode) в System.Compiler.Ir2md.VisitClass (Class Класс) на System.Compiler.Ir2md.VisitModule (МОДУЛЬ) на System.Compiler.Ir2md.SetupMetadataWriter (Строка debugSymbolsLocation) на System.Compiler.Ir2md.WritePE (МОДУЛЬ, String debugSymbolsLocation, BinaryWriter писатель) в System.Compiler.Writer.WritePE (String location, Boolean writeDebugSymbols, Module module, Boolean delayS ign, String keyFileName, String keyName) в Система. Compiler.Writer.WritePE (CompilerParameters compilerParameters, модуль Module) на ILMerging.ILMerge.Merge() в ILMerging.ILMerge.Main (String [] арг)

Сделав некоторое чтение это исключение suggets ILMerge не может найти сборки Windows.Networking. Я попытался, добавляя различные различные флаги ILMerge в том числе:.

\ ILMerge.exe/Библиотека: "% ProgramFiles (x86)% \ Reference Сборки \ Microsoft \ Framework \ WindowsPhone \ v8.0"/targetplatform: v4, "% ProgramFiles (x86)% \ Ссылочные сборки \ Microsoft \ Framework \ Silverlight \ v4.0 \ Профиль \ WindowsPhone71" /out:.\WP8\%1\MathToolbox.dll. \% 1 \ MathBase.dll. \% 1 \ PolyFunctions.dll . \% 1 \ RemoteTools.dll

Но все-таки получить такое же исключение. Если у кого-то есть какие-либо предложения, которые были бы весьма признательны.

ответ

2

Я не думаю, что ILMerge действительно работает с чистыми .NET-сборками, особенно когда в проектах Windows Phone 8 и WinRT используются ссылки на родные библиотеки - возможно, это не найденная неразрешенная сборка Windows.

+0

Я тоже думал о таких строках, но я использую другие пространства имен в SDK для Windows Phone в сборках, которые работают, например. MathBase.dll, хотя и не является частью пространства имен Windows.xxx. Я предполагаю, что все пространства WP8 создаются из одной ткани, возможно, нет. – MarcF

+0

Я принимаю ваш ответ, поскольку ни у кого больше нет дополнительной обратной связи. Я предполагаю, что получаю эту ошибку, потому что я ссылаюсь на собственные библиотеки для WP8, а ILMerge еще не догнал вас, как вы предложили. – MarcF

2

Ошибка указывает, что ILMerge не может найти Windows.winmd платформы. При компиляции проекта Windows Phone или Windows Store вы компилируете два основных объекта; Платформа SDK (WinRT) и .NET SDK. Любые инструменты, которые работают над этими сборками, потребуют и того, и другого.

В дополнение к передаче сборной папки .NET попробуйте передать «C: \ Program Files (x86) \ Windows Phone Kits \ 8.0 \ Windows Metadata каталог» в качестве аргумента lib.

Обратите внимание: ILMerge основан на старой версии CCI (http://ccimetadata.codeplex.com/), поэтому даже после выполнения выше может все еще возникнуть проблема с использованием формата метаданных WinRT, который немного отличается от .NET.