2014-12-17 2 views
5

TFS 2010에서 TeamCity로 마이그레이션했으며 솔루션 파일을 빌드하는 데 문제가 있습니다..NET 4.0에서 오류 빌드 TeamCity 빌드 서버를 사용하는 ASP.Net 솔루션 + google-api-dotnet-client

우리는 .NET 4.0을 사용하고 있습니다. 빌드 할 때 Google 라이브러리가 .NET 4.0 + system.net.http에서 악명 높은 문제를 일으키고 있습니다. 우리는이 설정이 TFS (MSBuild 4.0 사용)에서 오류없이 작동하도록했습니다. - :

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

우리는 이미 시도 : 사용 다른 주자 유형 가 :

의 App.config 올바른 assemblybindings이 있어야 비주얼 스튜디오, MSBUILD - 참조 된 모든 DLL이 직접 (구글 + system.net.http + ResolveAssemblyReference] C : - 등) 가 사용 직선 Nuget 패키지는 이러한 DLL에 복원 (이 확인 다)

빌드 오류가 복원) \ 프로그램 파일 (x 86을 \ MSBuild를 \ 12.0 \ 빈 \의 Microsoft.Common.CurrentVersion .targets (1635, 5) : 경고 MSB3268 : Th 전자 기본 참조 "Google.Apis.Auth.PlatformServices, 버전 = 1.9.0.26016, Culture = neutral, processorArchitecture = MSIL"은 프레임 워크 어셈블리에 대한 간접적 인 종속성을 가지고 있기 때문에 해결할 수 없습니다 "System.Net.Http, Version = 2.2 .22.0, 문화 = 중립, PublicKeyToken = b03f5f7f11d50a3a "현재 대상 프레임 워크에서 해결할 수 없습니다. ".NETFramework, Version = v4.0". 이 문제를 해결하려면 "Google.Apis.Auth.PlatformServices, Version = 1.9.0.26016, Culture = neutral, processorArchitecture = MSIL"이라는 참조를 제거하거나 "System.Net.Http, Version"이 포함 된 프레임 워크 버전으로 응용 프로그램의 타겟을 다시 지정하십시오 = 2.2.22.0, 문화 = 중립, PublicKeyToken = b03f5f7f11d50a3a ".

얹는 : [7시 58분 29초] W : MSBuild를 출력] C : \ BuildAgent 작업 \ \ dda43f1992063b18 \ 인테그레이션 \ CalendarSync 등 \ 장비 \ Google 캘린더 \의 GoogleCalendarDevice.vb (788,78) : 오류 BC30009 : 인터페이스 'Google.Apis.Requests.IDirectResponseSchema'가 포함 된 'Google.Apis, Version = 1.9.0.23042, Culture = neutral, PublicKeyToken = null'어셈블리에 대한 참조가 필요합니다. 프로젝트에 하나 추가하십시오. [C : \ BuildAgent \ work \ dda43f1992063b18 \ Integrations \ CalendarSync \ Severa.Integrations.CalendarSync.vbproj]

답변

1

이제이 문제에 대해 최적의 해결책이 없습니다.

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.Net.Http.2.0.20710.0\lib\net40 

C:\Program Files (x86)\Microsoft Web Tools\Packages\Microsoft.Net.Http.2.0.20710.0\lib\net40 

이 위치에서 버전이기 때문에 이것은 잘못된 것입니다 : 1.0.0.0 MSBuild에서 다음 위치 중 하나에서 잘못된 버전을 찾습니다. 우리가 2.2.28 버전으로 모든 장소를 교체 할 경우 우리는 다음과 같은 시도 .. 작동합니다

  • Compliation.config가의 Web.config를 잘 패키지
  • SLN 파일 힌트를 bindingredirect
  • 어셈블리에 추가 할 수 있습니다. .

불행히도 TC 에이전트는 공유 환경에 있으므로이 모든 위치에서이 파일을 대체 할 수 없습니다.

아이디어가 있으십니까?