Я настраиваю проект .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 framework.
ОБНОВЛЕНИЕ 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, которыйиспользует компилятор C # 3, но проект, который я компилирую, является проектом framework 2.0.При запуске из командной строки (см. ОБНОВЛЕНИЕ 1) сборка кажется неудачной, поскольку существует путаница относительно того, где указан файл Microsoft.CSharp.targets
.