[英]Azure Function fails to start with error "Method x in type y from assembly z does not have an implementation."
[英]The type 'X' does not exist in the type 'Y.Z'
我們的團隊最近已從Visual Studio 2008 / .NET3.5遷移到Visual Studio 2010 / .NET4.0。 現在,VS2010給了我一個奇怪的錯誤信息。 它可以通過以下程序重現:
using System;
namespace Some.Main
{
}
namespace SomeLib
{
interface Some
{
}
}
namespace ConsoleApplication1
{
using Some.Main;
using SomeLib;
class Program
{
static void Main(string[] args)
{
Console.Write("Press enter to continue");
Console.ReadLine();
}
}
}
這在VS2008中運行得很好,但在VS2010中我收到以下錯誤消息:
“SomeLib.Some”類型中不存在類型名稱“Main”
有趣的是,如果我點擊“構建解決方案”,程序構建得很好,我甚至可以毫無問題地執行它。 它只是Visual Studio,似乎有這個代碼的問題。
不幸的是,我正在研究一個大型遺留應用程序,我不能(輕松地)更改這些名稱空間的名稱。
我想知道如何解決這個錯誤,我也很好奇是什么導致它。
你只是讓編輯器感到困惑 。 Some
是命名空間和接口名稱,顯然它不會按照聲明的順序using
s進行檢查/解析。
如果你想明確指出你是指代名稱空間而不是類型名稱,只需將global::
添加到using
聲明(從根名稱空間開始),如下所示:
using global::Some.Main;
UPDATE
@alex在評論中鏈接的非常好的帖子: 'using'語句應該在命名空間的內部還是外部?
我認為IntelliSense被命名困惑,並不“理解”誰是誰。
隨附的屏幕截圖演示了正在發生的事情:IntelliSense“認為” Some.Main
是指名為Some
的接口,可能是因為沒有任何地方名為Some
的命名空間。
幸運的是,編譯器並沒有被愚弄,代碼似乎工作得很好,就像你說的那樣。
試試這個:
using Some.Main;
using SomeLib;
namespace ConsoleApplication1
{
// instead of placing usings here.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.