2011-03-02 15 views
0

我正在尝试为我们的项目创建nAnt构建脚本。 当我试图通过msbuild构建它 - 从nAnt作为外部任务调用时,我得到了所有缺失的引用错误。但是当我试图从VS 2008构建它时,它是可以的。 我发现一个项目引用(通过下面的命名空间在* .cs文件中使用子句)到另一个webproject。重点在于这个WebProject在SLN中被称为WebClient,但在它的性质中,get也是带有其他名称空间(如Copmany.Something.dll)的输出程序集。我试图通过从VS中指向它来添加引用,但VS不允许我这样做,因为它会是循环依赖。 也许有人有类似的问题?使用MSBuild构建时缺少组件引用,但在VS 2008中构建成功

回答

1

尝试拨打MSBuild.exeVS command promt。命令行与VS有相同的环境。要通过脚本或CI工作,可以拨打C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat

编辑: 你可以建立SLN文件:

MSBuild.exe 1.sln /t:Rebuild /p:Configuration=Release;Platform="Any CPU" 

如果你可以肯定的是VS建立SLN没有错误,你可以设置在恶性相同的生成behavouir。

+0

我已经忘了这个选项,但是,在我的情况下,它不工作,况且我发现一两件事,有两个SLN文件,它似乎是从1 SLN一些项目reffering到第二一个。奇怪,但通过VS构建这个解决方案时没有错误。 – 2011-03-02 13:27:55

+0

问题解决了。主要的基准参考错误给出的问题在于对引用的正确使用,并且在软管两个SLN中“拼凑起来”命名空间。我不得不重构这两个解决方案,之后它的构建没有问题。 – 2011-03-18 07:50:04

+0

@Sergio Rykov,我尝试了你建议的步骤。我正在使用NAnt的MSBuild任务时遇到同样的错误。大量的组件错误缺失。当我使用VS时,它的编译成功。我该怎么办?你能帮忙吗? – 2014-04-11 08:38:49

0

我有一个类似的问题,但它原来是由NAnt导致4.0运行时。 Visual Studio的目标是3.5,所以依赖处理方式不同,我猜。我通过强制NAnt将其定位到3.5运行时来修复它。

<property name="nant.settings.currentframework" value="net-3.5" /> 
相关问题