c# - 未为迁移的 (project.json -> .csproj) asp.net core 应用程序生成 web.config

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

背景

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

为了弄清楚 web.config 在这个新的 .csproj 世界中应该是什么样子,我们创建了一个全新的 dotnet 项目(使用 Visual Studio 2017,而不是 dotnet new)来查看web.config,但它实际上并未随项目一起创建。然而,部署后,服务器上的 Web 根目录中会神奇地出现一个。

我们尝试删除 web.config,但它并没有导致它生成。我们将项目中的所有内容与新项目进行了比较,但找不到任何看起来触发它(在新项目中)或阻止它(在我们旧项目中)的东西。我们在网上搜索了触发 web.config 自动生成的原因,但一无所获。

我们目前所处的位置

我们意识到我们可以用实际值替换 %LAUNCHER_*% 占位符并使其正常工作,但如果我们能让我们的项目神奇地生成 web.config,就像新创建的项目可以。

询问

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

最佳答案

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

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

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

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

<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>

在 csproj 文件内。

关于c# - 未为迁移的 (project.json -> .csproj) asp.net core 应用程序生成 web.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44145026/

相关文章:

asp.net-core - MVC6 中的自定义选择性 404 页面

c# - 嵌套类——从父类调用嵌套类

C#从目录中获取所有没有扩展名的文件名

c# - 添加对 VS2008 项目的 VB6 ActiveX DLL 引用

azure - 无法使用私有(private)镜像通过 CLI 创建 Azure 容器实例

azure - 我们是否需要任何程序更新才能将机器人从 Bot Framework 迁移到 Azure?

Azure DevOps AzureFileCopy@4 任务将文件复制到没有公共(public) IP 的 VM

asp.net - 在 razor 页面中集成 Tailwind css cdn

c# - 403.14 - 发布 Asp.Net Core 应用程序

c# - 从 winform 应用程序中的 Combobox 读取值