我正在尝试为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
我正尝试通过以下方式进行故障排除:
有什么想法吗?
答案 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>