我在asp.net核心sln上的VSTS上运行:错误MSB4018:“ TransformWebConfig”任务意外失败

时间:2019-06-11 02:36:34

标签: c# asp.net-core azure-devops azure-pipelines build-definition

我正在尝试为asp.net核心应用程序创建一个构建定义。我的项目在Visual Studio和MSBuild上编译。当我尝试在Azure上运行解决方案以进行编译时,它无法显示以下消息:

C:\Program Files\dotnet\sdk\2.2.105\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(49,5): Error MSB4018: The "TransformWebConfig" task failed unexpectedly.
System.Exception: In process hosting is not supported for AspNetCoreModule. Change the AspNetCoreModule to atleast AspNetCoreModuleV2.
   at Microsoft.NET.Sdk.Publish.Tasks.WebConfigTransform.TransformAspNetCore(XElement aspNetCoreElement, String appName, Boolean configureForAzure, Boolean useAppHost, String extension, String aspNetCoreModuleName, String aspNetCoreHostingModel)
   at Microsoft.NET.Sdk.Publish.Tasks.WebConfigTransform.Transform(XDocument webConfig, String appName, Boolean configureForAzure, Boolean useAppHost, String extension, String aspNetCoreModuleName, String aspNetCoreHostingModel, String environmentName)
   at Microsoft.NET.Sdk.Publish.Tasks.TransformWebConfig.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
Process 'msbuild.exe' exited with code '1'.

奇怪的是,我当前已经在计算机上安装了带有运行时2.2.5的SDK 2.2.300,但是当我在VSTS中运行构建定义时,似乎正在使用的SDK是2.2.105。 我最初的想法是VSTS代理没有正确的版本,并且正在2.2.105下运行。运行自托管代理后,错误相同。

在线查看VSTS代理的详细信息,我发现他们安装的最高的.NetCore依赖项是SDK 2.2.105。 在代理商的详细信息下,您可以阅读

.NET Core
The following runtimes and SDKs are installed:

Environment:

PATH: contains location of dotnet.exe
SDK:

2.2.105 C:\Program Files\dotnet\sdk\2.2.105
2.2.104 C:\Program Files\dotnet\sdk\2.2.104
2.2.103 C:\Program Files\dotnet\sdk\2.2.103
2.2.102 C:\Program Files\dotnet\sdk\2.2.102

我正尝试通过以下方式进行故障排除:

  1. 等待微软更新其在线代理
  2. 创建一个本地代理(自托管代理),在您的代理上运行 安装了所有依赖项的本地主机
  3. 尝试添加将SDK作为代理程序的一部分安装的步骤 任务(请参见下图),但不幸的是,我无法使其工作

有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:0)

正如您在Azure Pipelines VM images for Microsoft-hosted CI/CD中所看到的那样,已在托管代理中安装的最高.NET Core版本是带有运行时2.2.3的SDK 2.2.105。但是,用于构建项目的安装版本是带有Runtime 2.2.5的.NET Core SDK 2.2.300。这就是为什么您收到该错误消息的原因。

您可以使用task安装匹配的版本以支持此版本。首先添加扩展 .NET Core全局工具安装程序,然后使用 dotnet版本2。*(预览)任务安装带有运行时2.2.5的.NET Core SDK 2.2.300。

答案 1 :(得分:0)

如果您不想使用进程内托管,请从.csproj中删除“ AspNetCoreHostingModel”元素:

   <PropertyGroup>
     <TargetFramework>netcoreapp2.1</TargetFramework>
     <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
   </PropertyGroup>