2010-09-24 75 views
0

这与这两个问题:让CruiseControl.NET MSBuild任务的工作方式相同VS 2008构建

Why does MSBuild fail from the command line where VS2008 succeeds?

How to get cmd line build command for VS solution?

当我从Visual Studio 2008中构建,构建成功。如果我使用.NET Framework 3.5安装附带的MSBuild从命令行构建,它通常会失败。但是,如果我使用VS2008安装的Visual Studio 2008命令提示符,它会成功。对于我所链接的前两个问题,答案(我只能部分理解)似乎是命令行失败的原因。我的问题是特定于CruiseControl.NET。我如何应用他们的答案,以便CruiseControl.Net MSBuild任务始终能够成功,即使在将来进行更改后,只要它在VS 2008中正确构建即可?

在此先感谢您的帮助!

+0

你可以发布你遇到的错误与msbuild命令行吗?在你的情况下使用devenv任务可能吗? (见http://confluence.public.thoughtworks.org/display/CCNET/Visual+Studio+Task) – 2010-09-24 08:58:48

+0

错误太大,无法发布。我想避免在CI服务器上安装VS。我现在开始工作了。谢谢。 – 2010-09-24 22:00:35

回答

0

第一步是使用MSBuild从命令行正确构建项目。对我来说,这是一个在我将要列出的CI服务器上安装一些缺失的依赖关系的问题。

1)我需要为Compact Framework 3.5下载和安装Power Toys,以便构建.NET Compact Framwork 3.5项目。或者我可以安装Visual Studio 2008专业版。

2)我缺少的SQL Server Compact 3.5。在下载并安装Windows Mobile后,仍然无法找到依赖项。我通过包括SqlServerCe.dll文件在我的项目的资源库副本,并改变所有引用此文件使用一个从资源库中,而不是预期的系统知道在哪里可以找到这个文件下载解决了这个。或者安装Visual Studio 2008专业版可能已经解决了这个问题,而不需要我包括我的库中的DLL的一个副本,但我不知道。

由于我使用MSBuild从命令行进行编译而无需执行任何特殊的初始化或使用任何特殊的命令提示符,因此CruiseControl.Net中的MSBuild任务无需执行任何特殊操作。希望使用的MSBuild从命令提示符将继续成为这个简单的我,但其他人似乎没有那么幸运了根据2个问题我挂在我的问题上。

0

恕我直言,如果你不能让你的应用程序从命令行做一个干净的生成我建议修复这个问题,而不是修复问题的症状。

这里是我做过什么来解决类似的问题,但使用VS2010:

在构建服务器安装VS2010临

在命令行中,我的生成服务器上,我的MSBuild上运行我的项目的.sln文件:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild \\build-share\dev\projects\TestProject\trunk\TestProject.sln /t:Rebuild /v:diag /p:Configuration=Release 

注:\集结共享\仅仅是建立使用网络文件共享。

一旦按照我想要的方式工作,我将任务添加到我的ccnet。配置:

<project ...> 
    ... 
    <tasks> 
    ... 
    <msbuild> 
     <executable>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</executable> 
     <workingDirectory>\\build-share\dev\projects\TestProject\trunk</workingDirectory> 
     <projectFile>TestProject.sln</projectFile> 
     <buildArgs>/p:Configuration=Release /v:diag /t:rebuild</buildArgs> 
     <timeout>300</timeout> 
    </msbuild> 
    ... 
    </tasks> 
</project> 
相关问题