Build不能从VisualStudio中运行,但可以从msbuild运行

时间:2012-02-10 12:17:18

标签: visual-studio visual-studio-2010 msbuild msbuild-4.0

通过visual studio中的全新控制台应用程序模板,我编辑了.csproj以构建另一个项目:

...
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="BeforeBuild">
  <MSBuild Projects=".\other.mproj"/>
</Target>    
...

other.mproj的位置:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">

   <Target Name="Build">
       <Message Text="kikou" />     
   </Target>

</Project>

过了一段时间后,我发现修改other.mproj的内容(例如,通过引入错误或将文本kikou更改为其他内容)将不会被考虑在内,除非卸载/重新加载项目视觉工作室。

使用'msbuild myproj.csproj'从命令行构建,立即检测'other.mproj'中的更改。因此,看起来Visual Studio正在使用other.mproj文件的缓存版本。

为什么visual studio会缓存这个其他脚本(甚至不包含在项目中),我该如何解决这个问题呢?

更新:我也尝试了这个UseHostCompilerIfAvailable,它不起作用。


NB1:我没有在other.mproj中添加.csproj作为项目引用,因为它根本不是.NET项目(它只是为{{1}创建资源文件来自构建之前的其他输入)

NB2:我正在使用VS2010(10.0.10219.1SP1Rel + MSBuild 4.0.30319.1)

1 个答案:

答案 0 :(得分:1)

Visual Studio缓存所有MSBuild文件,这是出于性能原因而完成的。你将无法只使用MSBuild。 可能可以通过VS插件来实现这一点,但我不是百分之百确定。