通过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)
答案 0 :(得分:1)
Visual Studio缓存所有MSBuild文件,这是出于性能原因而完成的。你将无法只使用MSBuild。 可能可以通过VS插件来实现这一点,但我不是百分之百确定。