2016-07-20 3 views
1

빌드 도구에서 어셈블리 참조가 최신 버전 (v12)의 microsoft.build, microsoft.build.engine 및 microsoft.build.framework. 그러나 컴파일을 위해 Rebuild 옵션을 사용하는 BuildManager를 사용하여 프로젝트를 컴파일하는 동안 MSB4127 오류가있는 대상 : CleanWebsitesPackageCore에서 실패합니다. "CheckPathAttributes"작업을 어셈블리 "C : \ Program Files (x86)에서 인스턴스화 할 수 없습니다.) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll "설치되어있는 것과 동일한 버전의 Microsoft.Build.Framework 어셈블리를 사용하여 작업 어셈블리가 빌드되었는지 확인하십시오. 귀하의 호스트 응용 프로그램에 Microsoft.Build.Framework에 대한 바인딩 리디렉션이 누락되지 않았으며 'Microsoft.Web.Publishing.Tasks.CheckPathAttributes'유형의 객체를 'Microsoft.Build.Framework.ITask'유형으로 캐스팅 할 수 없습니다. "최신 microsoft.build.dll, v12.0.0.0과 함께 buildManager를 사용하는 동안 빌드가 실패했습니다.

주목해야 할 점은 명령 프롬프트에서 MSBuild.exe를 호출하여 프로젝트를 직접 컴파일하려고하면 잘 컴파일된다는 것입니다. 로그를보고있는 동안 "CleanWebsitesPackageCore"라는 대상이 "깨끗한"부분에서 호출되지 않았 음을 알 수있었습니다. 왜 buildmanager를 사용할 때 대상이 호출되는지, 그리고 명령 프롬프트에서 직접 msbuild.exe를 호출하지 않는지 궁금합니다.

아무도 왜 이런 일이 발생하는지 알 수 없습니다. 미리 감사드립니다.

+0

너무 많은 버전을 추가 할 수 있습니다. 캐스팅 오류는 잘못된 버전의 Microsoft.Build.Framework를 참조하고 있다고 말합니다. 내 컴퓨터에서 버전 14이고 GAC에 저장됩니다. –

+0

c : \ Program Files (x86) \ MSBuild \ 12.0 \ bin에서 microsoft.build, microsoft.build.engine 및 microsoft.build.framework를 참조했습니다. 12.0에서 MSBuild로 컴파일되지 않아야합니까? – Deepu

+0

버전 12는 아니고 버전 14가 아니기 때문에 내 컴퓨터에서 작동하지 않습니다. 아마도 결과에 따라 당신에게도 미치지 않을 것입니다. 사용중인 MSBuild.exe.config 파일을 살펴보십시오.이 버전 번호 문제에 대해 종이에 bindingRedirect 요소가 * 많이 * 있습니다. app.config 파일에 app.config 파일이 없으므로 app.config 파일도 필요합니다. –

답변

3

참조 솔루션 : http://blogs.microsoft.co.il/idof/2008/11/24/what-does-entity-framework-has-to-do-with-msbuild/

의 App.config 주위의 MSBuild의 dependentAssembly

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Build.Framework"   publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> 
     <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="12.0.0.0"/> 
    </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
+0

감사합니다. Erkan .. 그 후에 작동했습니다. – Deepu