ASP.NET Core-生成的web.config中的错误processPath

Bot*_*tis 10 msbuild asp.net-core

我有一个比较奇怪的问题.

我们正在处理的其中一个应用程序在发布到Azure Web App后停止工作.一切都在当地工作.经过长时间的调查,罪魁祸首是构建生成的web.config(在VSTFS中)具有:

<aspNetCore processPath=".\SomeServiceName.Api " stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

虽然正确的是: <aspNetCore processPath=".\SomeServiceName.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

请注意缺少的.exe.

项目的构建输出设置为Console Application.它是ASP.NET核心应用程序,运行在完整的框架上.使用Visual Studio BuildVSTS中的任务运行构建,并使用以下MSBuildArguments:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"

如果我在我的开发机器上运行构建,使用MSBuild cli,使用相同的命令行参数,我得到:

<aspNetCore processPath="dotnet" arguments=".\SomeServiceName.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

该项目正在使用<Project Sdk="Microsoft.NET.Sdk.Web">.

我猜我可以将web.config添加到项目中(它现在根本不存在)并且在源代码控制中按照我想要的方式进行控制,这应该可以解决我的部署失败的问题.但我想知道:

  1. 在VSTS上构建的web.config显然是错误的.这是Microsoft.NET.SDK.Web中的错误吗?
  2. 我无法访问actuall构建服务器.我猜测唯一合理的解释是有人更新了.net核心SDK,这就是行为改变的原因.这有意义吗?msbuild目标是来自.NET Core SDK,还是Visual Studio的一部分?
  3. 我在我的机器上得到了不同的web.config.这是为什么?

更新:
对于任何绊倒在这里的人,这里是github上的问题链接:https: //github.com/aspnet/websdk/issues/408
看起来现在已经修复了,并且有一天将成为某些版本的一部分(不知道是什么虽然发布周期).

LoZ*_*eno 5

我遇到了完全相同的问题,上周我解决了。我们有 2 个 ASP.Net Core 项目,一个显示问题,另一个没有问题。所以我们比较了 2 个 .csproj 文件。

事实证明,在我们的例子中,我们需要做的就是删除

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
  <PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

.csproj 中的属性;完成后,MSBuild 正确创建了 web.config,包括 processPath 末尾的 .exe。