Visual Studio构建成功,MSBuild失败

我正尝试使用MSBUILD从命令行清理并重建包含多个项目的解决方案文件。 出于某种原因,我的构建失败(大约10%的构建项目失败),并且出现多个错误,这些错误都是这样的:

错误CS0234:名称空间“bar”中不存在类型或名称空间名称“foo”(缺少程序集引用吗?)

现在,如果我使用完全相同的配置从Visual Studio 2010中清理并重建相同的解决方案文件,那么它将成功构建而不会出错。

MSBuild与Visual Studio的设置或配置有什么不同,需要改变,我不知道?


我只需要处理这个问题,事实证明,msbuild喜欢将构建的二进制文件移动到二进制文件 release目录中,并在构建时引用它们而不是项目本身。 构建完成后,将文件复制到此目录。 这解释了为什么它在Visual Studio中工作,而不是msbuild(我目前使用TFS 1010)。

在我的情况下,我有一个旧的二进制版本的dll被正在构建的项目引用,该项目应该生成了正确的文件。 旧版本(二进制)覆盖新版本(从源代码构建),因为引用二进制版本的解决方案正在稍后构建。


尝试检查MSBuild在非建筑库的项目文件中找不到的引用的路径。 有时,当您使用VS或ReSharper为您自动添加引用时,路径最终会到达 obj目录。 VS似乎能够应付这一点,但MSBuild没有那么多。


我假设项目的构建方式有所不同,因为Visual Studio不运行MSBuild,因为它承载了构建引擎本身。 这里回答了这个问题。

但是,我有类似的问题。

在我的情况下,该项目引用了一个外部库,该库位于项目的子目录中,不幸名为“包”。

运行MSBuild后,该文件夹的内容被删除,据说由Nuget再次下载。

显而易见的解决方案是重命名该文件夹,它工作。

链接地址: http://www.djcxy.com/p/80123.html

上一篇: Visual Studio build successful, MSBuild fails

下一篇: Create strongly typed POJOs for client library of OData service