Я настраиваю проект .csproj
для запуска некоторых пользовательских задач перед основной сборкой. Тем не менее, я не могу заставить задачи выполнять вообще.
Я раскомментировал элемент <Target Name="BeforeBuild" />
в файле .csproj
и добавил простое задание Message, но когда я его создаю, сообщение не появляется в моем выводе, поэтому кажется, что задача не запущена. Таким образом, этот фрагмент не выводит сообщение;
Листинг 1: Сообщение не появляется
<Target Name="BeforeBuild">
<Message Text="About to build ORM layer" Importance="normal" />
</Target>
Однако, если я ввожу некоторые атрибуты, я могу заставить .csproj
вообще не выполняться;
Листинг 2: Ошибка конфигурации MSBuild
<Target Name="BeforeBuild">
<Message Text="About to build ORM layer" XXImportance="normal" />
</Target>
Обратите внимание на атрибут XXImportance
. Ошибка сборки, которую я получаю, это
My.csproj(83,46): error MSB4064: The "XXImportance" parameter is not supported by the "Message" task. Verify the parameter exists on the task, and it is a settable public instance property.
Это говорит о том, что XML анализируется, что класс Message
найден, и что класс отражается на доступных свойствах.
Почему задача не выполнялась?
Я использую фреймворк 3.5.
ОБНОВЛЕНИЕ 1: В совете @Martin я попытался запустить MSBuild на консоли и получил эту ошибку:
c:\path\to\my.csproj(74,11): error MSB4019: The imported
project "C:\Microsoft.CSharp.targets" was not found. Confirm
that the path in the <Import> declaration is correct, and that
the file exists on disk.
Строка 74 читает:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
ОБНОВЛЕНИЕ 2: Я компилирую в VS2008, который использует компилятор С# 3, но проект, который я компилирую, является проектом framework 2.0. При запуске из командной строки (см. UPDATE 1) сборка, похоже, терпит неудачу, потому что есть путаница в отношении того, где указан файл Microsoft.CSharp.targets
.