저는 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..." />
내가 속성으로 플랫폼을 통과, 그래서 난 그냥 웹 사이트에 대한 비슷한 필요 추측하고있다.