Это ожидаемое поведение и почему оно происходит?
Я думаю, что это не то, что мы ожидаем. Когда я тестирую на ВМ, 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:
После того, как мой проект установил расширение bu nuget, в файле csproj есть предложение Import, откройте его и мы найдем:
Значение $ (ExtensionTasksPath) определено здесь. Так что, я думаю, у вас может отсутствовать что-то с файлом целей или предложением импорта, или что-то испортило это свойство.
В итоге:
1. Сохраните всю папку с решениями.
2.И если это не работает, добавьте нижеприведенный скрипт в ваш файл .xxproj:
<PropertyGroup>
<ExtensionTasksPath> Absolute path of your MSBuild.ExtensionPack.dll</ExtensionTasksPath>
</PropertyGroup>
Он будет перезаписывать значения из тега, и независимо от того, куда вы поместили сборку, просто добавьте абсолютный путь.
Если мой ответ полезен, пожалуйста, дайте мне отзыв. И любое обновление, пожалуйста, не стесняйтесь связаться со мной.