没有为迁移(project.json - > .csproj)asp.net核心应用程序生成web.config

时间:2017-05-23 21:06:12

标签: c# azure asp.net-core web-config visual-studio-2017

背景

我们有一个ASP.NET核心应用程序,在每次推送/合并到githup上的 master 时,都会构建并部署到Azure中App Service的开发槽中。此应用程序是使用project.json文件使用Visual Studio代码构建的。我们最近将其迁移到Visual Studio 2017(使用dotnet migrate)。迁移使我们的web.config文件保持原样,并将我们的预发布脚本迁移到.csproj文件,但没有带来运行dotnet publish-iis的发布后脚本。因此,未更新web.config文件以使用与Azure部署相关的值替换%LAUNCHER_*%占位符。

为了弄清楚web.config应该如何在这个新的.csproj世界中看到,我们创建了一个全新的dotnet项目(使用Visual Studio 2017,而不是dotnet new)来查看web.config ,但它实际上没有创建项目。但是,部署后,可以在服务器上的Web根目录中神奇地出现。

我们试图摆脱我们的web.config,但它并没有导致它被生成。我们将项目中的所有内容与新项目进行了比较,并且找不到任何看起来像是触发它(在新项目中)或阻止它(在我们的旧项目中)。我们已经在网上搜索了什么触发web.config自动生成但什么也没找到。

我们目前在哪里

我们意识到我们可以用实际值替换%LAUNCHER_*%占位符并使其工作,但如果我们可以让我们的项目像新创建的项目一样神奇地生成web.config,那将是首选。 / p>

问询

因此我们的问题是,如何在构建或部署时生成web.config,就像新创建的项目一样?

1 个答案:

答案 0 :(得分:4)

web.config生成是" Web SDK"的一部分。 csproj项目使用的。如果项目文件以

开头
<Project Sdk="Microsoft.NET.Sdk.Web">

它会自动获取web.config转换逻辑。不再需要dotnet publish-iis步骤。如果您没有在项目中直接包含任何asp.net核心nuget包,迁移可能没有注意到您的项目实际上是一个Web项目(或者可能存在错误)。

可以抑制web.config的另一个设置是

<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>

在csproj文件中。

相关问题