1. 程式人生 > >.NET新增引用後,但在程式碼中使用using時卻找不到名稱空間?

.NET新增引用後,但在程式碼中使用using時卻找不到名稱空間?

在同一個解決方案(.sln)下的A工程(.csproj)引用B工程的.dll後,在程式碼中使用using是無法找到對應名稱空間。

如圖1所示,MCC.Client引用了MCC.Business工程生成的.dll,但在圖2中,報了“Error 2 The type or namespace name 'UserProfile' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\a531032\My Documents\visual studio 2010\Projects\MCC\MCC.Client\SysUtility\AppContext.cs 15 24 MCC.Client

”的錯誤。

圖1 解決方案結構

圖2 編譯錯誤

由於之前修改過工程名稱,一直以為是這個原因造成的引用失敗,便沿著一下方向查了一遍錯誤,最終找到了原因。

  • 查詢被引用工程(此例中的MCC.Business工程)的Properties/Assembly.cs檔案中AssemblyTitleAssemblyProduct是否有誤?如圖3所示。

圖3 MCC.Business的Properties/Assembly.cs檔案

  • 右鍵檢視被引用工程(此例中的MCC.Business工程)的屬性是否正確?如圖4所示

圖4 MCC.Business的屬性頁

  • 查詢引用者工程的.csproj中的值是否與MCC.Business的Assembly資訊一致?如圖5所示

圖5 MCC.Client的.csproj檔案

  • 檢視引用者工程的屬性頁,欄位“Target Framework” 是否置為了“.NET Framework 4 Client Profile”?如圖6所示

圖6 MCC.Client的屬性頁

問題找到了

我的問題出在了建立MCC.Client工程(一個WinForm工程)時,VS 2010預設選擇了“.NET Framework 4 Client Profile”,以便於在客戶端部署時的便捷。但由於MCC.DataAccess工程中引用了System.Data.OracleClient(其並非包含在.NET Framework 4 Client Profile庫中,而在.NET Framework 4 Full庫中)。之後,MCC.Business引用了MCC.DataAccess生成的.dll,當MCC.Client去引用MCC.Business生成的.dll時,發現該.dll又引用了.NET Framework 4 Client Profile不包含的內容,所以在編譯時MCC.Client對MCC.Business的.dll給出編譯錯誤。

========================

.NET Framework 4 Client Profile 相對於 .NET Framework 4 的區別

  • 是後者的一個子集
  • 減少.NET Framework以及包還.NET Framework的應用程式的部署時間
  • 減少.NET Framework部署的失敗
  • 減少.NET Framework在ISV軟體的所佔大小,從而給其軟體更多的空間
  • 減少安裝了.NET Framework Client Profile的系統受攻擊的“介面”,因為Client Profille中部包括ASP.NET和一些伺服器所要的元件
  • 從下圖可以看到兩者大小差異

相關推薦

.NET新增引用程式碼使用using名稱空間

在同一個解決方案(.sln)下的A工程(.csproj)引用B工程的.dll後,在程式碼中使用using是無法找到對應名稱空間。 如圖1所示,MCC.Client引用了MCC.Business工程生成的.dll,但在圖2中,報了“Error 2 The type or namespace name '

iOS 在xib或者storyboard新增AutoLayout程式碼修改AutoLayout約束條件

如果是viewControl則AutoLayout適配寫在- (void)updateViewConstraints方法中修改約束; 如果是view則AutoLayout適配 則在- (void

在c語言自定義了一個函式在main呼叫提示到識別符號

解決方案一: 把定義的函式放在,main函式之前。 void f() { printf("Hello"); } main() { f(); } 解決方案二: 在main函式之前宣告。 void f(); main() { f

JTable新增元件改變當選的背景色

在JTable中新增元件後,當我們選中某一行時,我們會發現其他欄的背景色會變為table設定的選中背景色,而帶有元件的那一欄背景色卻不變 這時,我們需要在TableCellRenderer中新增一個填充方法 下面以JLable元件為例: import java.awt.C

解決jdk環境變數設定完在cmd執行javac出現’javac‘是內部或外部命令是可執行的程式或批處理檔案的錯誤提示

我的jdk'和jre都安裝在java_jdk這個資料夾下,如上圖所示。 在環境變數中的path和classpath的引數配置如下: 變數名:JAVA_HOME    變數值:F:\java_jdk\jdk1.8 變數名:Path                  變數值:

[轉]Golang號稱高並發高並發性能

大量 異步操作 而不是 需要 數據返回 管道 是否 回收 連續 1.管道chan吞吐極限10,000,000,單次Put,Get耗時大約100ns/op,無論是采用單Go程,還是多Go程並發(並發數:100, 10000, 100000),耗時均沒有變化,Go內核這對cha

對win10系統在cmd輸入python顯示到檔案的問題

如果你正確安裝了python,但是無法在cmd中進入編輯器,就我的出的問題來說,是由於你的環境變數有問題,只需要去新增你python的安裝路徑。下方的操作是你知道python的明確安裝路徑才能進行,如果不知道,可以去搜索,也可以解除安裝後重裝。 步驟如下: 1、開啟我的電腦

安裝完Ubuntu系統之後無法連線無線網有無線網絡卡到網絡卡驅動

今天給我的Mac裝完Ubuntu16.04之後,發現登入系統之後無法連線WIFI無線網路,筆記本是自帶無線網絡卡的,所以這個出現問題的原因只有一個,那就是沒有安裝好網絡卡驅動,而且Ubuntu自帶的相容網絡卡驅動並沒有起到作用。這個時候我查閱了一些網路上的相關資料,自己總結了一個解決辦法,相

關於Android studio 圖片資源存在 執行

今天碰到了一個比較無奈的 問題,圖片資源明明存在 程式碼編寫時 沒有錯誤報出。然而 當程式跑起來的時候,卻報出 android.content.res.Resources$NotFoundException: Resource ID #0x7f060062 研究好長時間,發現

記錄Android開發一個小坑佈局檔案TextView新增onClick點選無效問題

自己寫東西的時候,在TextView上添加了onClick去增加點選事件,去跳轉另一個Activity,執行後結果點選無效,新增Toast,Toast也不顯示,程式碼如下: <TextView android:layout_width="wrap_content"

在GridView新增按鈕如何觸發按鈕的各種事件?

//在GridView中新增按鈕後,如何觸發按鈕的各種事件? 1.在GridView的“編輯列”屬性視窗中,增加新的Botton列。 2.然後再該視窗右邊屬性中,將外觀項下的ButtonType設定一下,設定項有:如:Link、Button、Image。 3.屬性設定完成後

“display:block-inline形式的Span或Div新增文字導致Span或Div排版掉落、錯位”的原因及解決方法

在開始用display:inline-block的時候,只知道有baseline這麼一說,而且當時記筆記解決了空隙問題,百度一堆文章,什麼終極解決辦法等等,還記錄了一些問題,當時不明白,到今天才明白verticle-align的用法,原來可以這麼用,以後可以隨便玩inli

使用vue的axios對例項的data進行賦值的問題

總結一下我遇到的一個糾結很久的問題。 在專案中需要用到後臺的資料對前端渲染,使用到了vue整合的axios,使用vue中的鉤子函式在頁面元件掛載完成之後向後臺傳送一個get請求然後將返回後的資料賦值data()中定義的屬性: 執行後前端報錯: 原因: 在請求執行成功後執行

多個CDockablePane 合併程式碼控制切換Tab

多個CDockablePane合併後會生成N多個Tab頁,以前都是用滑鼠點選Tab頁來切換Tab,現在專案上某個功能需要用程式碼來控制切換Tab,百度找了很久終於找到一個方法,現在分享出來: CWnd * pParent = m_CameraPane.GetParent();  &n

《資料庫技巧》java對資料庫新增資料中文字元變成問號

資料庫:mysql 開發工具:eclipse 遇到的問題:編寫對mysql資料庫的新增語句,然後執行專案後,發現所有的中文內容,在資料庫中均顯示成問號 上述程式碼是向資料庫新增資料的程式碼,執行完畢後,開啟資料庫的顯示如下: 發生這

dtd檔案寫的引用實體被xml檔案引用無法在瀏覽器顯示的問題

解決方案:把dtd檔案由被xml檔案外部引用改成被xml檔案內部引用。 例子: 1.xml檔案: <?xml version="1.0" encoding="UTF-8"?> <!--檔名:學生資訊管理 --> <!--關鍵字'SYSTEM'代表.DTD檔案來源於當前

appium 連結真機執行程式碼但是APP並沒有啟動

要淡定,連結真機後,問題一下多出來這麼多,還沒有啟動程式,就碰到接二連三的問題。 爽到家了。慢慢解決吧。 具體問題是這樣的: # coding=utf-8from appium import webdriverimport timefrom selenium.common.exceptions impo

Django設定時區為TIME_ZONE = 'Asia/Shanghai' USE_TZ = True存入mysql的時間只能是UTC時間?

因為Mysql儲存的時間不能靈活設定時區,不像datetime物件有一項引數專門指定時區,所以為了統一全球的時間,必須使用國際標準時間UTC,否則就會亂套。所有時間在存如資料庫前,必須轉換成UTC時間。比如北京時間8點,存入mysql變成0點(UTC)。 官方文件,https://docs.dja

安卓6.0更新版本出錯:更新包與已安裝應用的簽名一致在應用管理到這個已經解除安裝的應用

本人用的是mac系統,手機是華為P10 PLUS,系統是安卓8.0,使用AS進行開發 每次更新版本時,debug版與正式版的簽名不一致,導致安裝失敗,但是如果直接在手機桌面拖拽刪除了debug版,就有可能會提示這個錯誤,因為系統沒有徹底將debug版的安裝包刪除,然而在應用管理中,是根本找不到這

以面向物件的思想實現資料表的新增和查詢JDBC程式碼超詳細

以面向物件的思想編寫JDBC程式,實現使用java程式向資料表中新增學生資訊,並且可以實現給定身份證號查詢學生資訊或給定準考證號查詢學生資訊。 歡迎工作一到八年的Java工程師朋友們加入Java高階交流:854630135 本群提供免費的學習指導 架構資料 以及免費的解答 不懂得問題都可以在本群提出來