2012-03-03 4 views
0

AfterBuild 대상에서 ILMerge를 실행하는 C# 프로젝트가 있습니다. 그러나 내 명령이 실패하여 -1073741701 코드로 종료되었다는 메시지가 나타납니다.ILMerge가 코드 -1073741701로 종료되었습니다.

내게 이상한 점은 명령 프롬프트에서 출력 된 명령을 실행하면 성공한다는 것입니다. 어떤 생각?

팁 : ILMerge를 사용하여 실버 라이트 용 프로젝트를 "클래식".NET 프로젝트와 병합했습니다. 이 프로젝트는 http://euss.codeplex.com에 있습니다.

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. 
: 나를 괴롭게하는 원인이 프로젝트는 그것은 출력 창에 다음을 생성 내 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;', ' ')" /> 

을 만들 실행 msbuild를 Evaluant.Uss.PersistenceEngine.Contracts

다음

입니다

이 명령을 (따옴표없이) 붙여 넣으면 복사됩니다.

+0

.Net2 또는 .Net 4 빌드입니까? 리소스 문제 일 수 있습니까? – rene

+0

.NET 2이고이 솔루션의 프로젝트에 리소스가 없습니다. –

+1

FWIW, -1073741701, 즉 '0xC000007B'는 코드 'STATUS_INVALID_IMAGE_FORMAT'입니다. 'AfterBuild'와 명령 행에서 사용하는 명령 행을 게시 할 수 있습니까? 두 파일에서 동일한 입력 파일을 사용 하시겠습니까? –

답변

0
그것은 ilmerge 다른 프로세스 내에서 호출되는 지원하지 않는 것 같습니다

:

  • 내가 MSBuild를 함께 실행하면 내가 관리자로 msbuild를 함께 실행하는 경우, 그것은, 그것을 오류 코드 0xC000007B
  • 와 충돌 내가 관리자로 실행하고 표준 사용자로 msbuild를 실행 ilmerge를 강제하는 경우 같은 오류와 충돌
  • , 나는 새로운 명령 프롬프트 ilmerge을 열이 나는 표준 사용자로 msbuild를하지 않고 ilmerge를 실행하는 경우는
  • 를 성공 , 성공한다
+0

.NET 설치시 문제가 발생했습니다. 나는 다른 창으로 전환했고 완벽하게 작동합니다. –

관련 문제