Msbuild 不支持将64位源和32位目标与提供程序appHostConfig一起使用

Msbuild 不支持将64位源和32位目标与提供程序appHostConfig一起使用,msbuild,webdeploy,msdeploy,Msbuild,Webdeploy,Msdeploy,我正在尝试使用MSDeploy进行自动部署,但一旦更改为使用应用程序池,我收到以下错误: Using a 64-bit source and a 32-bit destination with provider appHostConfig is not supported. 部署时,我需要指定要使用的应用程序池名称。服务器是64位的 MSBuild "%SOAB_MSBUILD_EXE%" "%SOAB_LOCAL_APP_PATH%\WebAPI\WebAPI.csproj" /t:Pack

我正在尝试使用MSDeploy进行自动部署,但一旦更改为使用应用程序池,我收到以下错误:

Using a 64-bit source and a 32-bit destination with provider appHostConfig is not supported.
部署时,我需要指定要使用的应用程序池名称。服务器是64位的

MSBuild

"%SOAB_MSBUILD_EXE%" "%SOAB_LOCAL_APP_PATH%\WebAPI\WebAPI.csproj" /t:Package /p:Configuration=Debug;PublishProfile=CI /p:VisualStudioVersion=16.0 /p:IncludeIisSettings=true /p:IncludeAppPool=true
MSDeploy

CALL "%SOAB_LOCAL_APP_PATH%\WebAPI\obj\Debug\Package\WebAPI.deploy.cmd" /Y "-setParam:'IIS Web Application Name'='Default Web Site\WebAPI'" "-setParam:'IIS Web Application Pool Name'='MyAppPool'"
MSBuild路径

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64\msbuild.exe
%%中包装的任何内容都是在运行时由生成服务器替换的变量

在我尝试使用MSDeploy更改应用程序池之前,一切都按预期进行。为了使应用程序池正常工作,我将以下参数添加到MSBuild命令
/p:includeIsSettings=true/p:IncludeAppPool=true
,并将setParam名称/值包含到MSDeploy命令中。我无法使用DefaultAppPool。对于我做错了什么,非常感谢您的帮助,提前谢谢您

编辑:在obj\debug\package中声明的WebAPI.SetParameters.xml参数

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="Default Web Site/WebAPI_deploy" />
  <setParameter name="IIS Web Application Pool Name" value="DefaultAppPool" />
  <setParameter name="IisVirtualDirectoryPhysicalPath" value="c:\_Files\MyApplication\WebAPI_deploy" />
</parameters>

错误说明了问题所在。您必须在源上使用
64位
版本,在目标上使用
64位
版本

您正在使用Microsoft Visual Studio的32位版本。因此,您必须安装Microsoft Visual Studio的
64位
。然后一切都会好起来的。并且还要确保您的
Microsoft Web部署
也是
64位
版本


替代方法-:另一方面,发生此错误的原因是源和目标之间的
appHostConfig
同步。如果要忽略错误,请执行此命令

-skip:attributes.name="AppWarmupModule"

在MSdeploy
-skip:
关键字的主要任务是在同步过程中指定要跳过的对象

在我尝试卸载Web Deploy并安装64位版本的原始帖子之前。出于某种原因,安装64位版本的Web Deploy时也安装了32位版本。我的团队在服务器上安装了多个版本。我最终删除了所有注册表项,并完全删除了所有与Web部署相关的内容,包括服务。我重新安装了64位版本的Web Deploy(使用服务完成安装),并收到了相同的错误消息。我检查了“程序文件”和“程序文件x86”,并在这两个文件中看到了Web部署。我从使用WebAPI.deploy.cmd直接切换到MSDeploy.exe。原因是WebAPI.deploy.cmd文件仍在使用32位版本的Web deploy。通过直接改为使用MSDeploy.exe,我可以控制哪个版本是32位还是64位。我收到一个新错误,并解决了它。我现在只需要插入应用程序池标识的密码。

我想让它正常工作,但总的来说,部署到IIS有其他选择吗?我找不到64位版本的visual studio,请参见它似乎也可以作为64位版本运行。那么Microsoft web deploy呢,也下载64位版本。您是否尝试过我提到的其他方法,并查看了此博客->我授予您奖金,因为您在资源方面帮助了我很多,并暗示这肯定是版本控制问题。非常感谢。
-skip:attributes.name="AppWarmupModule"