2012-02-13 2 views
3

Я написал препроцессор C#, который был включен в мои проекты .csproj, вызвав его с использованием целевой задачи PreBuild MSBuild. Это работает нормально, за исключением того, что, когда препроцессор модифицировал один или несколько исходных файлов C# в проекте (это происходит довольно редко), на этапе компиляции C# используется кешированная версия исходного файла. По завершении сборки Visual Studio предлагает мне сообщение «filename-this-or-that, что этот файл был изменен вне исходного редактора. Вы хотите его перезагрузить?». Поэтому я должен ответить «Да» и перестроить проект, чтобы заставить его использовать измененные исходные файлы.Как заставить Visual Studio перечитать исходные файлы после обработки BeforeBuild?

Есть ли способ заставить Visual Studio обнаружить, что исходные файлы были изменены и использовать обновленные версии на этапе компиляции? Или я должен ссылаться на свой препроцессор каким-то другим способом, а не на использование цели BeforeBuild?

+0

У меня такая же проблема с моим проектом [SetVersionTask] (https://bitbucket.org/markheath/setversiontask). –

ответ

2

Это не оптимальное решение, но это лучшее, что я придумал до сих пор.

Как указано здесь http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/6c042390-0782-4afe-94be-9746d75f5d34/ вы можете разместить

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> 

в файле .csproj, и получает Visual Studio, чтобы использовать «нормальный» C# компилятор вместо «внутреннего» тот, который использует кэшированные файлы. Это, по-видимому, снижает производительность, но я этого не заметил или пытался измерить.

И, как описано здесь http://startbigthinksmall.wordpress.com/2009/03/16/visual-studio-tipp-auto-refresh-file-changes/, вы можете получить Visual Studio, чтобы перестать изворачивать вас о обновленных файлах и просто перезагрузить их.

я бы до сих пор предпочитают, чтобы найти какой-то способ рассказать Visual Studio, чтобы обновить свои кэшированные файлы, а затем вызвать его внутренний компилятор ...

Я маркировка это как «ответ», но я до сих пор как услышать лучшие возможности, и если это произойдет, я отменим это.

Смежные вопросы