|
|
|
|
|
asp.net出現(xiàn)“找不到類型或命名空間名稱”錯誤,是每個.NET開發(fā)人員常常遇到的問題,本文匯集了一些可能的解決方法。
方法一
這可能是兩個項目之間 .Net 框架版本不兼容的結(jié)果。
它可以通過兩種方式發(fā)生:
例如,當(dāng)應(yīng)用程序設(shè)置為以 .Net 4 Client Profile 框架為目標(biāo)時,它會發(fā)生,并且它引用的項目以完整的 .Net 4 框架為目標(biāo)。
所以為了更清楚:
這種情況下的解決方案是升級應(yīng)用程序的框架目標(biāo)(項目 A),或者降級引用程序集的目標(biāo)(項目 B)。完整的框架應(yīng)用程序可以引用/使用客戶端配置文件框架程序集,但反之則不行(客戶端配置文件不能引用完整的框架目標(biāo)程序集)。
請注意,當(dāng)你在 VS2012 或 VS2013(使用 .Net 4.5 作為默認框架)中創(chuàng)建新項目并且:
這個方法對很多人有用,一網(wǎng)友說到:
這對我有所幫助,我最近將解決方案從VS2010移到了VS2012,并在VS2012中創(chuàng)建了一個新的類庫。突然間我收到了這個錯誤,當(dāng)然這是因為新的類庫以 .NET 4.5 為目標(biāo),而引用它的項目以 .NET 4.0 為目標(biāo)。將新庫降級到目標(biāo) 4.0 修復(fù)了它。
方法二
重新安裝 nuget 包對我有用,在我將 .NET Framework 版本更改為與所有項目同步后,一些 nuget 包(尤其是 Entity Framework)仍然為以前的版本安裝。用“包管理器控制臺”的下面命令為整個解決方案重新安裝包:
Update-Package –reinstall
方法三
有網(wǎng)友說到,刪除了 VS2015 報錯中它找不到的項目引用,然后再次添加它。解決了問題。試過清潔、構(gòu)建和重新啟動 VS 都無濟于事。
這方法得到很多人的支持,認為這是值得強烈推薦的技巧。
每當(dāng)在 VS 解決方案中發(fā)現(xiàn)任何引用問題時,強烈推薦此技巧。在我添加了一個針對更高版本的 .NET 框架的新項目后,它解決了我在 VS2017 中的問題。我敢打賭清除了一些緩存。
編譯器根據(jù)項目構(gòu)建順序進行編譯,因此如果一個項目中存在真正的錯誤,它可能會迷失在“找不到類型或名稱空間”錯誤的海洋中——因為它在找到錯誤,并且無法更新引用。如果沒有列出太多錯誤,你應(yīng)該能夠找到真正的錯誤。不幸的是,我有 100 個,所以這個技巧真的幫了我。我想智能感知不關(guān)心構(gòu)建順序,只是單獨編譯項目,這就是為什么你不會得到智能感知錯誤。
方法四
此方法是建議:將庫作為依賴項添加到正在使用它的項目中。
在構(gòu)建解決方案時,我遇到了同樣的錯誤(找不到類型或命名空間)。在它下面我看到一條警告,指出“引用無法解析”并確保“程序集存在于磁盤上”。
我很困惑,因為我的 DLL 非常清楚地位于引用指向的位置。在我嘗試構(gòu)建解決方案之前,VS 似乎沒有突出顯示任何錯誤。
我終于意識到了問題所在(或者至少我懷疑是問題所在),我在同一個解決方案中構(gòu)建庫文件,所以即使它存在于磁盤上,它也在那個位置被重建。
當(dāng)我右鍵單擊該項目并僅構(gòu)建該項目而不是整個解決方案時,我沒有收到錯誤消息。
為了解決這個問題,我將庫作為依賴項添加到正在使用它的項目中。
去做這個:
- 我在解決方案資源管理器中右鍵單擊我的解決方案并選擇“屬性”
- 然后在“公共屬性”中我選擇了“項目依賴項”
- 然后在“項目”下拉菜單中,我選擇了依賴該庫的項目
- 然后選中“取決于”下找到的庫旁邊的框
這確保首先構(gòu)建庫項目。
這個方法幫助我解決了我遇到的問題,原來我有兩個對依賴項項目的引用,優(yōu)先的那個是 bin 文件夾中以前構(gòu)建的 DLL,我刪除了 DLL 和引用并進行了重建,然后所有內(nèi)容都正確編譯了。
方法五
此方法建議:正確添加dll引用。
有網(wǎng)友說到,他發(fā)現(xiàn) VisualStudio 中的參考有一個三角形和一個感嘆號作為這個圖像,
然后,右鍵刪除它,并再次正確添加dll引用,問題就解決了。
方法六
有網(wǎng)友通過如下方法解決了問題。
首先,卸載項目,然后:
1、打開myProject.csproj并更新ToolsVersion="4.0"到ToolsVersion="12.0"(使用的是 vs2017)
2、從以下行中刪除myProject.csproj:
<Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
問題解決了。
方法七
這個答案可能對某人有所幫助。
因為VS更換使用了 VS 2017 .NET Core 2.2 Razor Pages,由于更改名稱,重命名模型,突然間得到了這個錯誤:
錯誤 CS0246 找不到類型或命名空間名稱“UploadFileModel”(是否缺少 using 指令或程序集引用?)
這在我的 .chstml Razor 頁面中用紅色下劃線標(biāo)出。(修復(fù)后不帶下劃線):
@page
@model UploadFileModel
所以,最后,幸運的是,我從別人那里找到了我最初使用的代碼,命名空間不包含 .cshtml
文件名!?。?/p>
這是我用名稱空間中的頁面名稱:
namespace OESAC.Pages.UploadFile
{
public class UploadFileModel : PageModel
{
我的原始代碼所具有的以及我所要做的就是從命名空間 UploadFile 中刪除頁面名稱:
namespace OESAC.Pages
{
public class UploadFileModel : PageModel
{
這時,所有的錯誤都消失了??!希望錯誤和解決方案對某人有所幫助,錯誤是對的,沒有名為“UploadFileModel”的命名空間。
方法八
有網(wǎng)友說到他的另一個解決方法:
我在將現(xiàn)有項目從VS2008升級到VS2012時遇到了這個問題。我發(fā)現(xiàn)有兩個項目(我創(chuàng)建的僅有的兩個)針對不同的 .Net 框架(3.5 和 4.0)。我通過確保兩個項目的“目標(biāo)框架”框中都有“.NET Framework 4”,在項目的“應(yīng)用程序”選項卡上解決了這個問題。
總結(jié)
由于asp.net“找不到類型或命名空間名稱”錯誤非常常見,本文匯集了該錯誤的8種可能解決方法,希望對讀者有所幫助。
除了上述8個可能的解決方法外,有網(wǎng)友發(fā)現(xiàn),asp.net字母大小寫不對引發(fā)“找不到類型或命名空間名稱”錯誤,這有點讓人哭笑不得。
相關(guān)文章