缺少源文件的 .asmx 文件不会引发编译错误

Posted

技术标签:

【中文标题】缺少源文件的 .asmx 文件不会引发编译错误【英文标题】:.asmx file with missing source file does not throw compile error 【发布时间】:2021-01-04 18:00:09 【问题描述】:

我有一个 AspNet Web 应用程序。它有一个 .asmx 网络服务。内容如下:

<%@ WebService Language="C#" CodeBehind="~/App_Code/SystemNotificationsService.cs" Class="SystemNotificationsService2" %>

请注意,代码隐藏不存在。该类不存在。然而它仍然编译没有错误。它直到运行时才处理此文件吗?

谢谢。

【问题讨论】:

那一行更像是一个参考,而不是实际的代码,所以它并没有真正意义上的编译。我从来没有真正证实过这一点,但我认为这或多或少是正确的。附言如果没有代码,可以删除asmx文件。 【参考方案1】:

我相信App_Code 中的所有内容在被访问之前都不会编译。这是一个老式的网站应用程序而不是一个网络应用程序吗?如果它是一个 web 应用程序,则不应使用 App_Code 文件夹 - 特别是如果您使用的是较新版本的 C#,因为您会收到错误。

【讨论】:

这是一个网站应用程序。我将所有文件复制/粘贴到网站应用程序到新项目中。起初它不会因为 app_code 运行。在我将 App_Code 文件夹重命名为 AppCode 之前,它会导致重复引用。在这个特定的 .asmx 文件中,我忘记更新代码隐藏以将其指向新位置,并且惊讶地发现它仍然编译。即使我在 .asmx 文件中输入了一个不存在的类,它仍然会编译。我的结论是它甚至在运行时才查看这个文件。 新项目?新项目是 webapp 或网站 - 新项目不应有 App_Code 文件夹。我不明白您在哪里说“在这个特定的 .asmx 文件中,我忘记更新代码隐藏以将其指向新位置”。要进行测试,只需将 C# 放入 .asmx 文件中。我会创建一个新的 WebApp 项目,然后再试一次。 原始项目是一个网站项目,我创建了一个新的 webapp 项目。并将旧项目的内容复制到新项目中。因此,它有一个 App_Code 文件夹,但 webApp 项目不应该有一个名为 App_Code 的文件夹,所以我将它重命名为 AppCode。我更新了所有指向重命名文件夹的代码隐藏引用。一切正常。我只是惊讶地发现它在编译时完全忽略了 asmx 文件。它似乎等到运行时,然后查看类名。

以上是关于缺少源文件的 .asmx 文件不会引发编译错误的主要内容,如果未能解决你的问题,请参考以下文章

在play框架中,无法编译文件XX.java。引发的错误是:无法在 Eclipse 中解析导入 XXX

我的应用程序无法编译,当它引发错误时,我的所有资源文件都消失了

解决缺少sql头文件编译错误

使用 QWebview 会产生编译错误,但不是因为 .pro 文件中缺少 Qt += webkit

android编译surface c++程序时,报错缺少.o文件

ros编译提示缺少链接库怎么办