Сбой публикации Clickonce Project с v4.0 MSBuild на 64-битных машинах - PullRequest
1 голос
/ 12 августа 2011

У меня есть это бизнес-приложение, клиент 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>
...