msbuild.exe在文件更改后无法提供新的输出

3

最近我遇到了使用msbuild.exe构建dll的问题。我的想法是从DOS命令行调用msbuild来自动创建DLL,而不需要打开MS Visual Studio。我正在使用的命令行示例如下:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\example.sln  /p:Configuration=example_config

问题是,即使我在这个项目中更改了文件(在MS Visual Studio之外),msbuild.exe似乎也无法识别更改,并仍然基于旧文件输出旧的dll。
我还尝试预先删除输出的DLL,但结果仍然相同。来自DOS的命令行提供了旧的dll。
如果我打开Visual Studio并手动构建输出,则不会出现此问题。
我在网上查找了一下,但找不到可行的解决方案。有人提到可能是MS的问题。实际上,在Windows XP下我也没有遇到这个问题。
我正在使用:
- Windows 7 64位版本 - MS Visual C++ 2010 - 解决方案包含几个子项目,分别输出库。
如果有人能帮忙,我将非常感激。

当你说 MS Visio 时,你是指 MS Visual Studio 吗? - Lanorkin
1
尝试在msbuild命令行中使用附加的/t:Rebuild开关。 - Lanorkin
抱歉,这是一个小错误。我指的是MS Visual Studio,而不是绘图程序Visio。我添加了这个开关,它可以工作,但如果我让整个解决方案重新编译,它会花费太多时间。我还尝试过:C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\example.sln /p:Configuration /t:MySubProject:Rebuild。仍然是整个解决方案将被重新编译。可能是因为“我的子项目”是我的“输出”项目。 - OISS
您可以使用您的项目而不是 C:\example.sln - Lanorkin
我收到了错误信息: MSBUILD:错误 MSB4192:项目文件“C:\example.vcproj”处于“.vcproj”或“.dsp”文件格式中,MSBuild 无法直接构建。 - OISS
1个回答

1
你可以通过命令行调用 Visual Studio 2010 来构建项目。要在不打开 Visual Studio 的情况下构建,请调用“devenv.com”(命令行友好的 Visual Studio 可执行文件)来构建项目。有关 devenv 命令行使用的更多信息可以 在 MSDN 上找到
自定义以下命令并从命令提示符中运行它以构建您的项目:
"%VS100COMNTOOLS%..\IDE\devenv.com" "full-path-to-solution" /Rebuild "desired-configuration" /Project "full-path-to-project"

我在“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE”文件夹中找不到“devenv.com”。 它是一个可执行文件,例如“.exe”吗? - OISS
你也可以调用devenv.exe,它应该在Common7\IDE\文件夹中。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接