2010-12-14 4 views
1

저는 VS2010 (최근에 VS2008 형식으로 이동)에서 개발 중이며 MSBuild 및 TeamCity로 구축/배포중인 .NET 3.5 웹 사이트 프로젝트를 보유하고 있습니다. Msbuild 도구 버전 3.5를 사용하고 있습니다. 웹 사이트 프로젝트는 Interop-dll을 통해 몇 가지 COM 구성 요소와 통신합니다. 내가 아는 한, 이러한 상호 작용은 Visual Studio에서 COM 구성 요소의 래퍼로 생성됩니다.AnyCpu 용 웹 사이트 구축

파일 또는 어셈블리 'Interop.cvvToolkitLib를'로드 또는 종속성 중 하나 할 수 없습니다 : 내 문제는 응용 프로그램이 내장 Microsoft.WebDeployments.targets를 사용하여 배포 할 때 내가 런타임 오류라고 메시지를 얻을 수 있다는 것입니다. 형식의 잘못된 프로그램을로드하려고했습니다. 형식입니다.

유사한 문제에 대해 검색 한 결과, "AnyCpu"에 대한 빌드가 x86에 기본값 인 interops를 생성하는 도구이므로이 문제를 수정해야한다는 게시물이 많이 있습니다.

그래서 난 내 빌드 스크립트를 열고 anycpu를 같은 플랫폼을 지정하려고 :

<Platform>AnyCPU</Platform> 

여전히 같은 문제. 더 많은 인터넷 검색 결과, "AnyCpu"또는 "Any CPU"가 될 수 있으므로 두 가지를 모두 시도했습니다. 아직도 운이 없다.

<ItemGroup> 
    <ConfigurationToBuild Include="Release|Any CPU"> 
     <FlavorToBuild>Release</FlavorToBuild> 
     <PlatformToBuild>Any CPU</PlatformToBuild> 
    </ConfigurationToBuild> 
    </ItemGroup> 

또는

<PlatformTarget>AnyCPU</PlatformTarget> 

오류가 동일하게 유지 : 기타 포럼 게시물이 대신 같은 것을 제안했다. 그래서 당신 stackoverflowers 내 질문은 : 나는 어떤 CPU에 대한 웹 사이트 구축을 만들려고 뭔가 잘못하고 있습니까? 아니면 어딘가 다른 곳에 거짓말을 솔루션입니까? 명시 적으로 일부 인수를 <CallTarget Targets="Build"/>에 전달해야합니까?

저는 MSbuild에 대해 경험이별로 없으므로 중요한 것을 간과 할 수 있습니다. 다른 웹 응용 프로그램 (웹 사이트가 아닌)이 문제없이 동일한 COM 구성 요소와 통신하므로 웹 사이트에만 문제가 있습니다. 웹 응용 프로그램은 다음과 같이 만들 수 있습니다 :

여기
<MSBuild 
     Projects="$(ProjectFile)" 
     StopOnFirstFailure="true" 
     Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput" 
     Properties="...Platform=AnyCPU..." /> 

내가 속성으로 플랫폼을 통과, 그래서 난 그냥 웹 사이트에 대한 비슷한 필요 추측하고있다.

답변

0

이 문제는 3.5 버전의 MSbuild를 사용하여 해결되었습니다. 4.0 버전과 3.5 toolsversion을 사용하고있었습니다. 어떤 이유로 인해 interop dll이 잘못된 플랫폼에 구축되었습니다. 그러나 나는 그것이 왜이 문제를 일으키는 지 전혀 모릅니다. 나는 3.5 프로젝트를 위해 MSbuild 4.0을 사용하여 몇 가지 이상한 문제를보고있다. 누구라도이 일이 왜 일어 났는지 깨달을 수 있다면 행복 할 것입니다.

관련 문제