我有这个业务应用程序,一个与WCF服务通信的winform客户端。客户端的目标是.net 3.5框架,IDE是Visual Studio 2010。 该项目包含对Microsoft Internet Controls和Interop.SHDocVw的引用,它是COM对象。我们的项目目标架构设置为“AnyCPU”
我们使用CC.net buildserver将应用程序部署到我们的不同环境,Test,QA和Production。
为生产环境构建并在64位Windows 7计算机上安装产品时,由于格式不正确,无法加载“SHDocVw”。在32位XP机器上安装时,它就像魅力一样。
我知道我可以尝试将我的整个解决方案设置为“x86”,而不是“AnyCPU”,但事实是,当使用以前版本的msbuild(v3.5)时,它就像魅力一样。为什么?这是msbuild.exe的v4.0版本中的错误吗?
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>