发布 .NET Framework 项目会将 .NET Core 元素注入到 web.config 中

问题描述 投票:0回答:1

我的项目是.NET Framework 4.8,项目是SDK风格。 web.config 是为 ASP.NET Web 应用程序(基本上是 MVC)创建的基本配置。我创建了一个发布到文件夹的发布配置文件。

当我发布项目时,发布文件夹中的 web.config 现在包含 .NET Core 条目。具体来说,该过程添加了以下内容:

<system.webServer>
  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
  </handlers>
  <aspNetCore processPath="dotnet" arguments=".\myApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>

我很难相信这种情况正在发生(而不是我所做的事情的结果),所以我通过以下步骤复制了它:

  1. 创建新的 ASP.NET Web 应用程序 (.NET Framework) - 在对话框中选择 MVC
  2. 右键单击项目并选择升级。选择升级为SDK样式项目
  3. 修复所有缺失的参考文献。从控制台将项目类型更改为库。
  4. 右键单击项目,选择发布并创建文件夹发布配置文件。
  5. 发布它。将已发布目录中的 web.config 与项目中的 web.config 进行比较。已发布的有 .NET Core 条目。

为什么会出现这种情况?我该如何防止这种情况发生?如果项目不是 SDK 风格,则不会发生这种情况。

附注使用最新的 Visual Studio 2022。

c# asp.net .net .net-core .net-4.8
1个回答
0
投票

发生这种情况是因为您的项目正在使用新的 SDK 样式项目格式(当您升级时),这对于 .NET Core 项目很常见,但 .NET Framework 项目也可以使用它来利用一些较新的功能。当您发布 SDK 样式的项目时,.NET CLI 工具会自动生成一个 web.config 文件,其中包含在 IIS 上托管 ASP.NET Core 应用程序所需的设置,包括 aspNetCore 处理程序和模块设置。这是 ASP.NET Core 项目的预期行为,但在 .NET Framework 项目中看到时可能会令人惊讶。 为了防止这种情况发生,您可以:

  • 发布后手动编辑 web.config 文件以删除 ASP.NET Core 特定设置。
  • 自定义发布流程以避免生成这些设置。这可能涉及修改 .csproj 文件或发布配置文件以控制 web.config 转换。

您可以在此处阅读有关这些内容的更多信息:https://learn.microsoft.com/en-us/dotnet/standard/frameworks

应用程序或库可以针对 .NET Standard 的某个版本。 .NET 标准版本代表所有 .NET 实现中的标准化 API 集。 例如,库可以以 .NET Standard 1.6 为目标,并使用相同的代码库访问跨 .NET Core 和 .NET Framework 运行的 API。

您的另一个解决方案是考虑恢复 .NET Framework 项目的旧式项目格式,以完全避免此问题。

© www.soinside.com 2019 - 2024. All rights reserved.