MSBuild.ExtensionPack.tasks наследование переменных из основного файла проекта MSBuild - PullRequest
0 голосов
/ 09 марта 2019

Корпус: При сборке из MSBuild (с VS Build Tools 2017) я не получаю никакого значения для переменной $ (ExtensionTasksPath) из основного файла msbuild, при сборке с интегрированным VS MSBuild значение передается из основного файла в MSBuild.ExtensionPack.tasks, это ожидаемое поведение и почему это происходит? Я не использую какие-либо свойства для тестирования этого конкретного случая.

1 Ответ

0 голосов
/ 13 марта 2019

Это ожидаемое поведение и почему оно происходит?

Я думаю, что это не то, что мы ожидаем. Когда я тестирую на ВМ, msbuild от VS Build Tools2017 получает то же значение, что мы можем получить в msbuild от VS IDE.

По причине такого поведения у меня есть несколько советов, которые помогут решить проблему стрельба:

1. Прежде всего, убедитесь, что оба сценария успешно скомпилированы.

2. Как вы упомянули выше, вы запускаете их в отдельных виртуальных машинах, убедитесь, что два тестируемых файла - это одна и та же папка решения, и вся папка решения. (Папка пакета в каталоге решения имеет смысл)

3. Проверьте файл .xxproj, проверьте, существует ли <Import Project="..\packages\MSBuild.Extension.Pack.1.9.1\build\net40\MSBuild.Extension.Pack.targets" ...>

Я обнаружил, что свойство $(ExtensionTasksPath) определено в файле MSBuild.Extension.Pack.targets, и этот файл импортируется в файл .xxproj по тегу <Import>.

Посмотрите на фотографии ниже из моего примера проекта, который устанавливает MSBuild.Extension.Pack от nuget: enter image description here После того, как мой проект установил расширение bu nuget, в файле csproj есть предложение Import, откройте его и мы найдем:

enter image description here

Значение $ (ExtensionTasksPath) определено здесь. Так что, я думаю, у вас может отсутствовать что-то с файлом целей или предложением импорта, или что-то испортило это свойство.

В итоге:

1. Сохраните всю папку с решениями. 2.И если это не работает, добавьте нижеприведенный скрипт в ваш файл .xxproj:

<PropertyGroup>
      <ExtensionTasksPath> Absolute path of your MSBuild.ExtensionPack.dll</ExtensionTasksPath>
</PropertyGroup>

Он будет перезаписывать значения из тега, и независимо от того, куда вы поместили сборку, просто добавьте абсолютный путь. Если мой ответ полезен, пожалуйста, дайте мне отзыв. И любое обновление, пожалуйста, не стесняйтесь связаться со мной.

...