Подтвердить что ты не робот

Можно ли использовать MSBuild Extension Pack без установки?

Есть ли способ использовать пакет расширения MSBuild с "локальной" ссылкой, которая не требует запуска установщика? Другими словами, можете ли вы сохранить цели в папке с элементами решения, чтобы каждый разработчик не мог ее установить?

4b9b3361

Ответ 1

Перед статусом импорта задач необходимо объявить свойство ExtensionTasksPath. Например, посмотрите:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">E:\Data\Development\My Code\Community\MSBuild\ExtensionPack\</ExtensionTasksPath>
  </PropertyGroup>

  <Import Project="$(ExtensionTasksPath)MSBuild.ExtensionPack.tasks"/>

  <Target Name="Demo">
    <MSBuild.ExtensionPack.FileSystem.File TaskAction="GetTempFileName">
      <Output TaskParameter="Path" PropertyName="TempPath"/>
    </MSBuild.ExtensionPack.FileSystem.File>

    <Message Text="TempPath: $(TempPath)" />
  </Target>

</Project>

Задачи сообщества MSBuild аналогичны, но свойство имеет имя MSBuildCommunityTasksLib. Я думаю, что для задач SDC это называется TasksPath.

Ответ 2

Мне не удалось заставить это работать с относительными путями (т.е. не c:\blah but..\blah).

Это связано с тем, что вы не могли повторно использовать переменную ExtensionTasksPath, если она относительна, поскольку ваш файл (.csproj) и файл MsBuild.ExtensionPack.tasks находятся в разных местах, что приводит к другому значению для относительного пути,

В конце концов, это то, что заставило его работать для меня (поставить поверх вашего файла .csproj):

    <PropertyGroup>
   <ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">..\4.0\</ExtensionTasksPath>
  </PropertyGroup>
  <Import Project="..\references\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>

Причина, по которой вам нужен "..\4.0 \" вместо "" (пустой), заключается в том, что файл MsBuild.ExtensionPack.tasks обнаруживает пустое значение и делает некоторые другие вещи, если это так. Я не хотел взломать файл MsBuild.ExtensionPack.tasks, если я захочу его позже обновить.