gpt4 book ai didi

C#编译器提示函数本身不明确

转载 作者:行者123 更新时间:2023-11-30 18:22:42 25 4
gpt4 key购买 nike

在我继承的 C# WebApp 项目中工作。我有几个函数定义......

public static DataTable ExecuteDT(this AppDBContext target, string sql, int timeoutSeconds = defaultTimeoutSeconds) {
DbCommand cmd = target.Database.Connection.CreateCommand();
cmd.CommandText = sql;
cmd.CommandType = System.Data.CommandType.Text;
if (timeoutSeconds != defaultTimeoutSeconds) cmd.CommandTimeout = timeoutSeconds;

DataTable rv = new DataTable();
rv.Load(cmd.ExecuteReader());
return rv.Copy();
}

public static object ExecuteDR(this AppDBContext target, string sql, int timeoutSeconds = defaultTimeoutSeconds) {
DataTable dt = target.ExecuteDT(sql, timeoutSeconds);
return (ReferenceEquals(dt, null) || dt.Rows.Count == 0) ? null : dt.Rows[0];
}

当我对应用程序执行构建时,它编译良好且错误为零。
但是,当我尝试运行该网站(使用 F5)时,它会在我的浏览器中启动,然后出现编译错误:

Compiler Error Message: CS0121: The call is ambiguous between the following methods or properties: 
'ConstructionLoan.WebFormsApp.DataExtensions.ExecuteDT(ConstructionLoan.Domain.Data.AppDBContext, string, int)' and
'ConstructionLoan.WebFormsApp.DataExtensions.ExecuteDT(ConstructionLoan.Domain.Data.AppDBContext, string, int)'

Source Error:

Line 34:
Line 35: public static object ExecuteDR(this AppDBContext target, string sql, int timeoutSeconds = defaultTimeoutSeconds) {
Line 36: DataTable dt = target.ExecuteDT(sql, timeoutSeconds);
Line 37: return (ReferenceEquals(dt, null) || dt.Rows.Count == 0) ? null : dt.Rows[0];
Line 38: }


Source File: c:\Users\myuser\Source\Workspaces\ourclient\src\Web\Main\ConstructionLoan.WebFormsApp\App_Code\DataExtensions.cs Line: 36

它提示同一个函数本身不明确。我搜索了所有源代码,这是该函数的唯一声明,所以我真的很想知道编译器到底在搞什么乱七八糟的事情。

我在 Google 上发现的唯一一个与此类似的问题是某个人的项目以某种方式结束了对自身的引用。我仔细检查以确保该项目没有引用自身,事实并非如此。

我也尝试过对项目进行清理和重建。

无论出于何种原因,这个项目在 IDE 中编译得很好,但是当试图在浏览器中运行它时,它就崩溃了。

我在 VS 2015 中工作,目标是框架的 4.5.2 版本。

最佳答案

显然这与 App_Code 文件夹有关。

似乎 App_Code 文件夹中的任何内容都被编译到 DLL 中,并保留在那里并在运行时编译。因此,在运行时将类的两个副本加载到同一个命名空间中,因此会出现错误。

我将 App_Code 中的所有文件移动到一个新的非 ASP.NET 特殊文件夹,现在错误消失了。

关于C#编译器提示函数本身不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com