Веб-сайт c # в Visual Studio 2010 не компилируется и выдает ошибку «Метод не найден», показывая два отсутствующих метода. Однако методы существуют (в классе в App_Code), и «Перейти к объявлению» в intellisense находит их немедленно.
Затем, если я изменяю файл класса, содержащий методы (например, просто добавляя бессмысленный пробел), он компилируется.
Это поведение не воспроизводимо на 100%, но происходит на разных рабочих станциях, время от времени, всегда с теми же двумя методами. Я переместил их в другой класс - без изменений. В них нет ничего особенного, поэтому я не вижу смысла показывать здесь исходный код (или есть?).
Вопрос: кто-нибудь когда-либо имел подобное явление и может пролить некоторый общий свет? Обходной путь достаточно прост, но он раздражает и всегда смущает новых членов команды.
Обновление:
Один из методов начинается следующим образом (в файле с именем Statistics.cs, без пространства имен):
public class Statistics
{
public static void GetAllStatistics()
{
//Initialize the xls file:
const string xlsFileTitle = "All available statistics";
//Remove space and invalid chars from file name
string pattern = xlsFileTitle.Replace(" ", string.Empty);
foreach (char invalidChar in Path.GetInvalidFileNameChars())
{
pattern.Replace(invalidChar.ToString(), String.Empty);
}
//Initialize excel file with a timestamp
long timeStamp = DateTime.Now.Ticks;
string fileName = string.Format("{0}_{1}.xls", pattern, timeStamp);
string filePath = HttpContext.Current.Server.MapPath("XlsFiles");
Метод вызывающей стороны выглядит следующим образом:
public partial class Download : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
bool isDownload = false;
if (this.Page.Request.QueryString["title"] != null && this.Page.Request.QueryString["type"] != null)
{
string pattern = this.Page.Request.QueryString["title"];
switch (this.Page.Request.QueryString["type"])
{
case "xlstotal":
//All stats at once
Statistics.GetAllStatistics(); // HERE IT IS
isDownload = true;
this.HandleFileDownload(pattern, "XlsFiles", "application/vnd.ms-excel-");
break;
Ничего особенного, насколько я могу судить. И все же ...