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

当我发布项目时,发布文件夹中的web. connect现在具有.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框架)-在对话框中 Select MVP
  2. 右键单击项目并 Select 升级. Select 将其升级为SDK风格项目
  3. 修复缺失的任何参考资料.从控制台将项目类型更改为库.
  4. 右键单击项目, Select "发布"并创建文件夹发布配置文件.
  5. 发布它.将已发布的目录中的web. connect与项目中的web. connect进行比较. 已发布的包含.NET Core条目.

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

P.S.使用最新的Visual Studio 2022.

推荐答案

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

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

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

应用程序或库可以针对.NET Standard的某个版本..NET标准版本代表所有.NET实现中的标准化API集.For example, a library can target .NET Standard 1.6 and gain access to APIs that function across .NET Core and .NET Framework using the same codebase.

对您来说,另一个解决方案是考虑恢复到.NET框架项目的老式项目格式,以完全避免此问题.

Csharp相关问答推荐

具有多个应用程序服务器的Azure Signal

我正在制作一个Unity游戏,如果对这个玩家控制器进行编码,但当它 skip 时,它会删除我的速度

访问C#中的数据库字段时获取数据是收件箱错误-为什么?&有效,如果声明不有效

PredicateBuilder不是循环工作,而是手动工作

无法使用ternal- .net修复可空警告

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

在FilePath中搜索一个词,并根据First Match从左到右提取文件路径

应用程序重新启动后,EFCore列表的BSON反序列化错误

将类移动到新命名空间后更新RavenDB Raven-Clr-Type

如何管理Azure认证客户端响应和证书 fingerprint

在try 使用访问服务器上的文件夹时,如何解决CORS错误.NET核心API

解决方案:延长ABP框架和ANGING OpenIddict中的令牌生命周期

未显示详细信息的弹出对话框

c#在后台实现类型化数组

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

当`JToken?`为空时?

使用SQL Server 2022+时,我是否必须将代码从SqlConnection类对象中迁移出来?

处理方法内部过滤与外部过滤

有没有更好的方法来使用LINQ获取整行的计算组

为什么INTEGER在通过反射调用时对空对象返回TRUE,而在INTEGER上调用时返回FALSE?