Проект приложения BizTalk Server не может быть скомпилирован с .NET 4.7.2
В моей недавно созданной среде BizTalk 2020 Dev, когда я добавляю в решение проект приложения BizTalk Server (.btaproj), в диалоговом окне, в котором вы задаете имя проекта, отображается селектор.NET framework, и по умолчанию используется версия 4.7..2 как и ожидалось.
Однако, когда проект добавляется к решению, я вижу в свойствах проекта, что он нацелен на.NET 4.6.1. Кто-нибудь это видел? это ошибка или что-то не так с установкой?
Естественно, я меняю его на версию 4.7.2 как обычный проект BizTalk, и все отлично компилируется в Visual Studio.
Но на нашем сервере сборки тот же проект не работает. Мы используем Azure Devops для CICD. На сервере сборки у нас установлена та же версия VS (2019 Enterprise) и установлено расширение BizTalk Server (v3.12.1.0), а также инструменты msbuild из установки BizTalk server.
В журналах сначала появляется предупреждение:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): предупреждение MSB3274: основная ссылка "A.dll" не может быть решена, потому что она была построена на платформе.NETFramework,Version=v4.7.2. Это более поздняя версия, чем текущая целевая платформа.NETFramework,Version=v4.6.1. [B.btaproj]*
Далее в журнале btaproj не найдет сборки для включения в пакет.zip.
Сообщение выше подразумевает, что у меня разные целевые версии, но у меня их нет.
Странно то, что я могу войти на сервер сборки, клонировать тот же проект и скомпилировать его с помощью VS.
Единственный способ заставить сервер сборки успешно скомпилировать проект (или любой другой проект BizTalk с.btaproj, если на то пошло) - это изменить.NET на 4.6.1 (как для.btproj, так и.btaproj), и все это хорошо компилируется и развертывается в среду BizTalk.
Я проверил файлы проекта и файлы, зарегистрированные в Git, и с исходными файлами все в порядке. Флаг очистки я установил для очистки исходных кодов и каталога вывода. Я могу скомпилировать обычный проект BizTalk и приложение.NET с 4.7.2 на сервере сборки, это нормально, только когда я задействую проект.btaproj, где он начинает плохо себя вести.
Кто-нибудь может указать, с чего начать искать?.btaproj с самого начала кажется подозрительным, но он также может быть изолирован от msbuild на сервере сборки, и он отличается от компиляции с помощью Visual Studio.
2 ответа
Поскольку проект приложения BizTalk Server, например.btaproj, по умолчанию использует моникер целевой платформы 4.6.1 при добавлении в решение, вам нужно будет вручную изменить версию вручную для ОБА отладки и выпуска.
Пусть вас не вводит в заблуждение диалоговое окно создания проекта, где по умолчанию установлена версия 4.7.2.
В качестве обходного пути вы можете указать /p:TargetFrameworkVersion=v4.7.2
в столбце Аргументы MSBuild задачи MSBuild.
MSBuild позволяет вам устанавливать свойства в командной строке с помощью переключателя -property (или -p). Эти глобальные значения свойств переопределяют значения свойств, заданные в файле проекта. Это включает свойства среды, но не включает зарезервированные свойства, которые нельзя изменить.
Подробнее см. В этом документе.