У меня есть проект C#, в котором я запускаю ILMerge в целевой точке AfterBuild. Тем не менее, у меня есть сообщение, в котором сообщается, что моя команда не удалась и вышла с кодом -1073741701.ILMerge вышел с кодом -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=""$(SolutionDir)Dependencies\ILMerge\Ilmerge.exe" /target:library /lib:"$(FwkLibPath)" @(libPaths->'/lib:"%(RootDir)%(Directory)."', ' ') "/targetplatform:v2,$(FwkLibPath)" /out:"$(MergedOutDir)$(RootNamespace)$(Suffix)" "$(ProjectDir)@(IntermediateAssembly)" @(IlmergeAssemblies->'"%(FullPath)"', ' ')" />
Он генерирует следующие данные в окне вывода:
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.
Если я скопирую эту команду (без окружающих цитат), она работает.
Это сборка .Net2 или .Net 4? Это может быть проблема с ресурсом? – rene
.NET 2, и у меня нет ресурсов в любом проекте этого решения –
FWIW, -1073741701, то есть '0xC000007B' является кодом' STATUS_INVALID_IMAGE_FORMAT'. Не могли бы вы вывести строки команд из «AfterBuild» и из командной строки? Вы уверены, что используете те же файлы ввода из обоих? –