Azure devops BizTalk Server应用程序项目无法使用.NET 4.7.2进行编译

Azure devops BizTalk Server应用程序项目无法使用.NET 4.7.2进行编译,azure-devops,biztalk,.net-4.7.2,biztalk-2020,Azure Devops,Biztalk,.net 4.7.2,Biztalk 2020,在我新创建的BizTalk 2020开发环境中,当我向解决方案中添加BizTalk Server应用程序项目(.btaproj)时,设置项目名称的对话框窗口将显示.NET framework选择器,默认为预期的版本4.7.2 但是,当项目添加到解决方案中时,我可以在项目的属性中看到它的目标是.NET 4.6.1。有人见过这个吗?这是一个错误还是安装有问题 当然,我将其更改为常规BizTalk项目的版本4.7.2,并且在Visual Studio中一切都可以正常编译 但是在我们的构建服务器上,相同

在我新创建的BizTalk 2020开发环境中,当我向解决方案中添加BizTalk Server应用程序项目(.btaproj)时,设置项目名称的对话框窗口将显示.NET framework选择器,默认为预期的版本4.7.2

但是,当项目添加到解决方案中时,我可以在项目的属性中看到它的目标是.NET 4.6.1。有人见过这个吗?这是一个错误还是安装有问题

当然,我将其更改为常规BizTalk项目的版本4.7.2,并且在Visual Studio中一切都可以正常编译

但是在我们的构建服务器上,相同的项目失败了。我们将Azure Devops用于CICD。在生成服务器上,我们安装了相同版本的VS(2019 enterprise),并安装了BizTalk server扩展(v3.12.1.0)以及BizTalk server安装中的msbuild工具

在日志中,我首先得到一个警告:

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很好地编译它

使生成服务器成功编译该项目(或任何其他具有.btaproj的BizTalk项目)的唯一方法是将.NET更改为4.6.1(对于.btproj和.btaproj都是如此),所有这些都可以很好地编译并部署到BizTalk环境中

我已经检查了项目文件和Git中的文件,所有源文件看起来都正常。我设置为clean sources和output directory的clean标志。我可以在build server上使用4.7.2编译一个常规BizTalk项目和.NET应用程序,这很好。只有当我涉及到一个.btaproj项目时,它才会开始出现错误行为


有人能指出从哪里开始寻找吗?.btaproj一开始似乎有些可疑,但它也可以与生成服务器上的msbuild隔离,并且与使用Visual Studio编译不同。

作为一种解决方法,您可以在msbuild任务的msbuild Arguments列中指定
/p:TargetFrameworkVersion=v4.7.2

MSBuild允许您使用-property(或-p)开关在命令行上设置属性。这些全局特性值将替代在项目文件中设置的特性值。这包括环境属性,但不包括不能更改的保留属性


有关详细信息,请参阅此部分。

因为BizTalk Server应用程序项目(例如btaproj)在添加到解决方案时默认为目标框架名字对象4.6.1,因此您需要手动更改版本以进行调试和发布

不要被默认为版本4.7.2的“创建项目”对话框误导

您可以尝试重新指定v4.7.2以覆盖以前的版本,就像。谢谢,原来我没有为.btaproj上的发行版设置正确的框架版本名字对象,为什么一开始默认为4.6.1,这很奇怪。感谢您的帮助。这是需要为项目设置的目标框架名字对象。btaproj,在本例中,我未能同时更改发布设置,它默认为4.6.1,即使我在添加项目时选择了4.7.2。谢谢你的帮助!