我们有一个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,就像新创建的项目一样?
答案 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文件中。