MSBuild、未解决的外部和 Visual Studio 2005

Posted

技术标签:

【中文标题】MSBuild、未解决的外部和 Visual Studio 2005【英文标题】:MSBuild, unresolved externals and Visual Studio 2005 【发布时间】:2012-07-31 22:30:30 【问题描述】:

我正在尝试使用 msbuild 构建 Visual Studio 2005 解决方案。我使用的批处理文件是:

@ECHO OFF

SETLOCAL

set VSDIR=C:\Program Files (x86)\Microsoft Visual Studio 8
set VCVARSALL=%VSDIR%\VC\vcvarsall.bat

call "%VCVARSALL%" x86 && ^
msbuild path\to\my.sln ^
    /v:normal ^
    /p:Configuration=Release ^
    /p:Platform=Win32 ^
    /t:SomeProject:Rebuild

ENDLOCAL

现在,SomeProject 依赖于 SomeOtherProject,这一切都很好,除了我在使用 msbuild 构建时遇到未解决的外部问题:

SomeObjFile.obj : error LNK2001: unresolved external symbol "private: static class SomeClass<class C> C::s_c" (?s_c@C@@0V?$SomeClass@VC@@@@A)

问题是当我在 Visual Studio 2005 中右键单击该项目并选择“重建”时,我没有遇到任何未解决的外部问题。

有人知道我在上面调用 msbuild 时可能做错了什么吗?

谢谢!

【问题讨论】:

您为什么要为此尝试使用 MSBuild? VS2005 C++ 项目不使用 MSBuild。只有 2010 年的。我不确定这是否是您的问题,但是调用 devenv/vcbuild 从命令行构建解决方案不是更直接吗? 实际上,我很想调用 devenv 并完成它,但它似乎根本没有启动 。我以前使用过 devenv.com,因此我可以将输出输出到控制台,但无法启动它。将尝试使用 vcbuild。 好的,现在我想起了原因:当我需要构建特定项目时,依赖项似乎不起作用。 解决了 msbuild 版本的问题:缺少项目引用。 您应该将其发布为答案(并接受它)。它可能会帮助处于相同情况的其他人。 【参考方案1】:

解决了 msbuild 版本的问题:缺少项目引用。要解决此问题,请右键单击 VS 中的项目并添加对缺失库的引用。保存所有项目,Bob 就是你的叔叔。

【讨论】:

以上是关于MSBuild、未解决的外部和 Visual Studio 2005的主要内容,如果未能解决你的问题,请参考以下文章

MSBuild:从 Visual Studio 中构建解决方案后运行目标

使用 Msbuild 和 devenv 在项目解决方案下构建特定的 Visual Studio 项目

MSBuild 的 Visual Studio 解决方案项目中所需的更改

Visual Studio 在构建、重建和清理解决方案时使用啥 dotnet core cli 命令(或 msbuild 命令)?

MSBuild + Visual Studio:为解决方案中的所有项目自定义默认“复制本地”

Visual Studio 2012 解决方案 TeamCity 中的 MSBuild