Я пытаюсь использовать ILMerge для объединения нескольких сборок в одну сборку плагина, которая будет динамически загружаться другим приложением.
Используя задачи сообщества, я до сих пор получил:
<Target Name="CombineAssemblies" AfterTargets="MvcBuildViews">
<ItemGroup>
<MergePaths Include="@(_ResolvedProjectReferencePaths)" />
<!--<MergePaths Include="%(Reference.ResolvedPath)" /> This doesn't work! -->
</ItemGroup>
<ILMerge
DebugInfo="true"
LogFile="log.txt"
InputAssemblies="@(MergePaths)"
OutputFile=""$(TargetPath)""
CopyAttributes="true"
TargetPlatformVersion="v4"/>
</Target>
Использование @ (_ ResolvedProjectReferencePaths) прекрасно работает для ссылок проекта, и их пути правильно передаются в задачу ILMerge.
При запуске через MSBuild выдается ошибка ILMerge.exe. Глядя на файл журнала, я получаю:
Unresolved assembly reference not allowed: System.Web.Mvc.
at System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNode assembly)
at System.Compiler.Ir2md.GetTypeRefIndex(TypeNode type)
at System.Compiler.Ir2md.VisitReferencedType(TypeNode type)
at System.Compiler.Ir2md.VisitMethod(Method method)
at System.Compiler.Ir2md.VisitClass(Class Class)
at System.Compiler.Ir2md.VisitModule(Module module)
at System.Compiler.Ir2md.SetupMetadataWriter(String debugSymbolsLocation)
at System.Compiler.Ir2md.WritePE(Module module, String debugSymbolsLocation, BinaryWriter writer)
at System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols, Module module, Boolean delaySign, String keyFileName, String keyName)
at System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Module module)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
Я ссылаюсь на библиотеки MVC, которые, как я полагаю, из файла журнала не могут быть разрешены ILMerge, даже если они правильно разрешены в процессе компиляции.
Поэтому я хочу передать расположение этих библиотек в ILMerge, в идеале используя элемент «Ссылки», чтобы мне не приходилось вручную добавлять несколько путей ссылок, которые пришлось бы изменить, если бы я добавил или удалил ссылки. Есть ли какой-нибудь эквивалент @ (_ ResolvedProjectReferencePaths) для обычных ссылок?
Спасибо!