从 Visual Studio 中的全新控制台应用程序模板中,我编辑了.csproj
构建另一个这样的项目:
...
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="BeforeBuild">
<MSBuild Projects=".\other.mproj"/>
</Target>
...
Where other.mproj
is:
<?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
除非在 Visual Studio 中卸载/重新加载项目,否则不会考虑其他内容。
从命令行构建'msbuild myproj.csproj'
立即检测到变化'other.mproj'
。所以看起来 Visual Studio 正在使用缓存版本other.mproj
file.
为什么 Visual Studio 会缓存其他脚本(甚至不包含在项目中),我该如何解决这个问题?
更新:我也尝试过这个使用HostCompiler如果可用 https://stackoverflow.com/a/2631760/684399,它不起作用。
NB1:我没有添加other.mproj
作为项目参考.csproj
因为它根本不是一个 .NET 项目(它只是为.csproj
来自构建之前的其他输入)
NB2:我使用的是 VS2010 (10.0.10219.1SP1Rel + MSBuild 4.0.30319.1)
Visual Studio 会缓存所有 MSBuild 文件,这样做是出于性能原因。您将无法仅使用 MSBuild 来解决此问题。它may可以通过 VS 插件来实现这一点,但我不能 100% 确定这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)