У меня есть это бизнес-приложение, клиент winform, который взаимодействует со службами WCF.Клиент нацелен на платформу .net 3.5, а IDE - Visual Studio 2010. Проект содержит ссылку на Microsoft Internet Controls и Interop.SHDocVw, который является COM-объектом.Для целевых архитектур наших проектов установлено значение «AnyCPU»
. Мы используем сервер сборки CC.net, который развертывает приложение в нашей другой среде, Test, QA и Production.
При сборке для производственной средыи установка продукта на 64-битной машине Windows 7, он не может загрузить «SHDocVw» из-за неправильного формата.При установке на 32-битной машине XP это работает как чудо.
Я знаю, что могу попытаться настроить все свое решение на «x86», а не «AnyCPU», но дело в том, что при использованиипредыдущая версия msbuild (v3.5) работает как шарм.Зачем?Является ли это ошибкой в версии v4.0 msbuild.exe?
Задача в CC.net выглядит следующим образом
<!-- Deploy of clickonce -->
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>****</workingDirectory>
<projectFile>PublishApplication.xml</projectFile>
<buildArgs>
/p:ProjectToPublish=******
/p:Configuration=Release
/v:diag
/p:ApplicationVersion=1.0.1.$[$CCNetLabel]
/p:InstallUrl="*****"
/p:NewVersionDeployFolder="*****_$[$CCNetLabel]"
/p:ProductName="*****Test"
/p:PublisherName="*****"
/p:UpdateEnable="true"
/p:UpdateRequired="true"
/p:MinimumRequiredVersion=1.0.1.$[$CCNetLabel]
</buildArgs>
<timeout>900</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
</msbuild>
PublishApplication.xml выполняет несколько вещей, таких как созданиепапка и копирование файлов, но сама сборка идет с этой задачей
<Target Name="PublishApplication" DependsOnTargets="Clean">
<Message Text="Publishing application"/>
<MSBuild Projects="$(ProjectToPublish)" Targets="Publish" />
</Target>