ILMerge вышел с кодом -1073741701 - PullRequest
0 голосов
/ 03 марта 2012

У меня есть проект на C #, где я запускаю ILMerge в цели AfterBuild.Однако у меня есть сообщение о том, что моя команда завершилась неудачно и завершилась с кодом -1073741701.

Странная вещь для меня заключается в том, что, если я запускаю команду, записанную в выводе, в командной строке, она завершается успешно.Есть идеи?

Один совет: я использую ILMerge для объединения проектов, созданных для silverlight, с «классическим» .NET-проектом.Вы можете найти этот проект на http://euss.codeplex.com. Проект, вызывающий у меня проблемы, - это Evaluant.Uss.PersistenceEngine.Contracts

Вот msbuild, который я запускаю для создания моей команды ilmerge

<CreateItem Include="@(ReferencePath)" Condition="'%(CopyLocal)'=='false' and '$(FwkLibPath)\.'!='%(RootDir)%(Directory).'">
  <Output TaskParameter="Include" ItemName="libPaths" />
</CreateItem>
<CreateItem Include="@(ReferencePath)" Condition="'%(CopyLocal)'=='true'">
  <Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
</CreateItem>
<Exec Command="&quot;$(SolutionDir)Dependencies\ILMerge\Ilmerge.exe&quot; /target:library /lib:&quot;$(FwkLibPath)&quot; @(libPaths->'/lib:&quot;%(RootDir)%(Directory).&quot;', ' ') &quot;/targetplatform:v2,$(FwkLibPath)&quot; /out:&quot;$(MergedOutDir)$(RootNamespace)$(Suffix)&quot; &quot;$(ProjectDir)@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" />

В окне вывода генерируется следующее:

P:\Developpement\euss\Dev\ProvideMultiplatformVersions.proj(42,5): error MSB3073: The command ""P:\Developpement\euss\Dev\Dependencies\ILMerge\Ilmerge.exe" /target:library /lib:"C:\Windows\Microsoft.NET\Framework\v2.0.50727" /lib:"P:\Developpement\euss\Dev\Assemblies\." "/targetplatform:v2,C:\Windows\Microsoft.NET\Framework\v2.0.50727" /out:"P:\Developpement\euss\Dev\Assemblies\Net\Evaluant.Uss.PersistenceEngine.Contracts.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.PersistenceEngine.Contracts\obj\Debug\Evaluant.Uss.PersistenceEngine.Contracts.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.Commands.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.Domain.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.Era.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Metadata\bin\Debug\Evaluant.Uss.MetaData.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.MetaData.Light.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.Model.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.PersistenceEngine.Contracts\bin\Debug\Evaluant.Uss.PersistenceEngine.Contracts.Instrumentation.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.PersistentDescriptors.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Serializer\bin\Debug\Evaluant.Uss.Serializer.dll" "P:\Developpement\euss\Dev\Evaluant.Uss.Commands\bin\Debug\Evaluant.Uss.Utility.dll"" exited with code -1073741701.

Если я скопирую и вставлю эту команду (без кавычек), она будет работать.

1 Ответ

0 голосов
/ 10 марта 2012

Похоже, ilmerge не поддерживает вызов в другом процессе:

  • , если я запускаю его с помощью msbuild, он вылетает с кодом ошибки 0xC000007B
  • Если я запускаю его с помощью msbuildкак администратор, он вылетает с той же ошибкой
  • , если я заставляю ilmerge работать от имени администратора и запускаю msbuild от имени обычного пользователя, у меня открывается новая командная строка для ilmerge, и она успешно
  • Если я запускаю ilmerge без msbuild от имени обычного пользователя, это завершается успешно
...