Из нового шаблона консольного приложения в 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
на что-то другое) не будет приниматься во внимание, если не выгрузить / перезагрузить проект в Visual Studio.
Сборка из командной строки с помощью 'msbuild myproj.csproj'
немедленно обнаруживает изменения в 'other.mproj'
.Так что все выглядит так, будто visual studio работает с кэшированной версией файла other.mproj
.
Почему Visual Studio кэширует этот другой скрипт (который даже не включен в проект) и как я могу решить эту проблему?
Обновление: я также пробовал это UseHostCompilerIfAvailable , это не работает.
NB1: я не добавил other.mproj
в качестве ссылки на проект в .csproj
, потому что это вообще не проект .NET(он просто создает файлы ресурсов для .csproj
из других входов перед сборкой)
NB2: я использую VS2010 (10.0.10219.1SP1Rel + MSBuild 4.0.30319.1)