導航:首頁 > 編程語言 > 要將程序集標記為系統必備組件

要將程序集標記為系統必備組件

發布時間:2023-01-20 23:39:35

A. 求助,dll標記為系統必備組件,對其強制簽名

為使用戶進程無法訪問甚至修改關鍵的操作系統數據,windows使用了兩種處理器訪問模式:用戶態和內核態。用戶應用代碼運行在用戶態,而系統代碼(如系統服務和設備驅動)運行在內核態。內核態指處理器中授權訪問所有系統內存並使用所有CPU指令的...

B. 100分,C# 安裝包的問題,急急急!

建立「安裝部署」項目,在"應用程序文件夾"中添加要發布的程序集,
選項目菜單的屬性,單擊"系統必備"按鈕,選"從與我的應用程序相同的位置下載系統必備組件",
確定,並生成項目即可。會自動在setup程序的Debug文件夾中包含.net和installer
還可以添加快捷方式

C. 計算機的常用文件夾中出現一些*.dll的文件,不知道是什麼東西請路過的朋友給指導一下,先謝謝了。

CLR對組件代碼的打包、部署和查找有自己的一套概念和技術。
這些概念和技術和COM、java和win32存在著本質上的區別。我們必須先弄清楚代碼和元數據是如何打包的。

1.1 模塊定義
CLR程序存在模塊(mole)中。一個CLR模塊是一個位元組流,通常作為一個文件存儲在本地的文件系統中或者WEB伺服器上。
CLR模塊採用Windows NT的PE(Portable Exectuable)/COFF(Common Object File Format)可執行文件格式的擴展版。
當CLR編譯器對C#、VB.NET等源程序編譯後,產生MSIL(微軟中間語言)和元數據。
元數據描述代碼中的類型,包含每種類型成員的簽名、代碼引用的成員和運行庫在執行時使用的其它數據。
MSIL和元數據包含在一個PE文件中,此文件基於並擴展過去用於可執行內容的已公布的Micorsoft PE和COFF。

CLR模塊包含代碼、元數據和資源。

模塊代碼:一般以公共中間語言的格式存放;
模塊元數據:描述了模塊中定義的類型,包含名字、繼承關系、方法簽名和依賴信息等。
模塊的資源:靜態的只讀數據,例如,字元串、點陣圖,以及其他沒有被存儲為可執行代碼的部分。

CLR模塊格式:

PE/COFF表頭 PE頭
COFF頭
PE/COFF .text部分 IMAGE_COR20_HEADER
代碼(CIL和/或本機機器碼)
資源數據
字元串/BLOB池
元數據表

CLR模塊格式輸出選項:

C#/VB.NET C++ 直接可載入? 從Shell中可直接運行? 可訪問控制台?
/t:exe /CLR 是 是 總是
/t:winexe /CLR /link /subsystem:windows 是 是 從不
/t:library /CLR /LD 是 否 依賴主機(Host-dependent)
/t:mole /CLR:NOASSEMBLY /LD 否 否 依賴主機(Host-dependent)

選項/t:mole產生「未加工的(raw)」模塊,其文件擴展名默認為.netmole。
這種格式的模塊不能獨立地部署,CLR也不能直接載入它們。
准確地說,開發人員必須在部署前,將這些「未加工的」模塊和成型的組件(被稱為程序集(Assembly))進行關聯。
相比之下,用/t:library選項編譯產生的模塊,能夠包含附加的元數據,允許開發人員將其作為獨立代碼進行部署。
選項/t:library編譯產生的模塊,其文件擴展名默認為.DLL。

「未加工的(raw)」模塊沒有程序集清單。「未加工的(raw)」模塊也稱作為能添加到其他程序集的模塊。

1.2 程序集(Assembly)
為了部署CLR模塊,開發人員首先必須將其歸屬於一個程序集(Assembly)中。程序集就是一個或多個模塊的邏輯組合。
盡管程序集可能由多個模塊組成,但是一個模塊往往只屬於一個程序集。假如出現兩個程序集都引用同一個公共模塊的情況,
CLR將這個公共模塊視為兩個不同的模塊,即公共模塊中的每個類型都有兩個不同的拷貝。
在CLR中,程序集是部署的「原子」,被用來對CLR模塊進行打包、載入、分發以及版本控制(物理的)。雖然程序集可能
包括多個模塊以及輔助文件,但程序集本身被作為原子單元進行命名和版本化的。

程序集規定了組件中類型定義的作用域。CLR類型將它們的程序集名/類型名對作唯一標識。

C# VB.NET 意義
類型 Public Public 訪問類型不受限制
Internal Friend 類型只在程序集內部可訪問
成員 Public Public* 訪問成員不受限制
Internal Friend 成員只在程序集內部可訪問
Protected Protected 訪問僅限於包含類或者包含類派生的子類型
Protected internal Protected friend 訪問僅限於包含類以及包含類派生的子類型,或者當前程序集的其它類型。
Private Private 訪問僅限於包含類型

*在VB.NET中,通過關鍵字DIM聲明的方法默認為public,而欄位默認為private。

程序集名字:
每個程序集的都採用四部分(four-part)名字,作為唯一標識符。這四部分名字由名稱、文化、開發人員以及組件版本構成。
這些名字被存放於程序的清單中,以及引用它的所有程序集的程序集清單中。在載入時,CLR使用四部程序集名字找到正確的組件。

程序集的命名約定通常是基於命名空間前綴的。例如,.NET XML被部署在System.Xml程序集中,它包含的所有類型都使用System.Xml的
命名前綴。這僅僅是個約定,而不是規則。例如,類型System.Object存放在mscorlib的程序集中,而不是System的程序集中。
程序集名字的Name屬性往往與程序集清單的底層文件名(不包含任何文件擴展明,盡管它們可能有用)相對應。當構建(Build)程序集時,
名字的這個部分是由編譯器根據目標文件名自動選擇的。

2 CLR類型
2.1 CLR類型
類型是CLR程序的生成快。開發人員在程序集的上下文中創建類型。當開發人員確定了把工程劃分成一個或者多個程序集後,
他們的大部分時間就都花在考慮類型是如何工作的,以及類型直接是如何相互關聯的。
CLR類型(CLR type)是命名的可重用抽象體。CLR類型的描述存放在CLR模塊的元數據中,
該模塊還包含使類型工作所需要的CIL或者本機代碼。完全限定的CLR類型名包括三部分:程序集名字、可選的命名空間前綴和類型名稱。

2.2 命名空間(namespace)
命名空間是一個邏輯的組織系統,開發人員在程序集開發上下文環境中使用命名空間來組織他們的類型系統。
這能幫助程序員在單個程序中使用兩個或者多個同名的類型定義,只要它們分屬不同的命名空間。這個命名空間前綴是一個字元串,
一般以開發人員的組織名(例如,Microsoft、MyCorp)開始;如果是.NET Framework的一部分,則以System開始。

3 小結
1)程序集用於組件的打包、部署、分發以及版本控制;命名空間前綴用於類型系統的邏輯劃分。
2)程序集的名字由四部分組成,而其Name屬性往往與程序集清單的底層文件名(不包含任何文件擴展明,盡管它們可能有用)相對應。
3)程序集的命名約定通常是基於命名空間前綴的,但這不是必須的。
4)如果要用到其它程序集中的類型,可以有兩種方式:顯式的和隱式的。通常我們都使用隱式的,這種方式不需要開發人員和程序集載入器進行顯式的交互。只要在編譯我們的程序集時,將需要的外部程序集使用/reference:<file>選項鏈接進來即可;如果使用顯式的方式,開發人員可以使用System.Reflection.Assembly類的LoadFrom靜態方法。
5)通常開發人員在自己的程序集上下文環境中時,主要打交道的是類型,以及類型的邏輯組織(namespace prefix)。
6)這里有兩種主要的程序集種類,應用程序(.exe)和庫(.dll)。

D. 如何:在 Windows Installer 部署中安裝系統必備組件

大多數應用程序都擁有系統必備組件。所謂系統必備組件,是指要在目標計算機上運行應用程序,該計算機上必須具備的組件,如 .NET Framework 運行庫。Visual Studio 中的部署工具提供了在安裝期間自動檢測組件是否存在,並安裝一組預先確定的系統必備組件的功能,即一個稱作 bootstrapping 的進程。對於Windows Installer 部署,.NET Framework 的引導是默認啟用的。您可以對 .NET Framework 禁用引導,但只有在確定所有目標計算機上均已安裝正確版本的 Framework,或者應用程序不需要 Framework 的情況下才可以禁用此功能。注意對於已本地化的應用程序,如果部署項目的「Localization」屬性設置為「英語(美國)」以外的區域設置,則還會引導 .NET Framework 語言包。附加組件應只有在應用程序依賴它們時才引導。默認情況下,引導的組件通過組件供應商的網站進行部署。組件供應商網站的其他替換選擇包括:從應用程序安裝所在的位置(可以是文件共享、本地磁碟或 UNC 文件共享)安裝組件。從指定的本地路徑、URL 或文件共享位置安裝。注意下面的過程適用於 Windows Installer 部署。若要使用 ClickOnce 應用程序安裝系統必備組件,請參見如何:與 ClickOnce 應用程序一起安裝系統必備組件。注意顯示的對話框和菜單命令可能會與幫助中描述的不同,具體取決於當前的設置或版本。若要更改設置,請在「工具」菜單上選擇「導入和導出設置」。有關更多信息,請參見 Visual Studio 設置。選擇要安裝的系統必備組件在「解決方案資源管理器」中,選擇部署項目。在「項目」菜單上單擊「屬性」。在「屬性頁」對話框中,展開「配置屬性」節點,然後選擇「生成」屬性頁。單擊「系統必備」按鈕。在「系統必備」對話框中,確保選中「創建用於安裝系統必備組件的安裝程序」復選框。在「請選擇要安裝的系統必備組件」列表中,選中希望安裝的系統必備組件,然後單擊「確定」。指定系統必備組件的下載位置在「解決方案資源管理器」中,選擇部署項目。在「項目」菜單上單擊「屬性」。在「屬性頁」對話框中,展開「配置屬性」節點,然後選擇「生成」屬性頁。單擊「系統必備」按鈕。在「系統必備」對話框中,選擇一個位置:如果要將系統必備組件的安裝程序部署到供應商,請單擊「從組件供應商的網站上下載系統必備組件」。如果要將系統必備組件的安裝程序部署到與應用程序安裝程序相同的位置,請單擊「從與我的應用程序相同的位置下載系統必備組件」。如果要將系統必備組件的安裝程序部署到另一個位置,請單擊「從下列位置下載系統必備組件」,然後輸入一個本地路徑、URL 或文件共享位置。注意必須確保系統必備組件的安裝程序已復制到指定位置,並在該位置為每個系統必備組件分別准備了一個子文件夾。注意 「屬性頁」對話框中的「安裝 URL」指定用於安裝應用程序和/或系統必備組件的伺服器或網站的 URL。有關 Windows Installer 如何使用此 URL 的信息,請參見「部署項目屬性」對話框 ->「配置屬性」->「生成」。單擊「確定」繼續。禁用引導在「解決方案資源管理器」中,選擇部署項目。在「項目」菜單上單擊「屬性」。在「屬性頁」對話框中,展開「配置屬性」節點,然後選擇「生成」屬性頁。單擊「系統必備」按鈕。在「系統必備」對話框中,清除「創建用於安裝系統必備組件的安裝程序」復選框,然後單擊「確定」。 注意如果禁用引導,則在尚未安裝系統必備組件的情況下,仍將安裝應用程序,但應用程序可能不會運行。對於 Windows Installer 部署,可以包含啟動條件以檢查系統必備組件,並在找不到系統必備組件時停止安裝。有關更多信息,請參見在部署中啟動條件管理。

E. c#打包的時候,加入.netframework系統必備,如何做

1. 創建安裝向導項目或安裝部署項目

新建項目-〉其他項目類型-〉安裝與部署-〉安裝向導(或安裝部署),如命名為setup。

2. 將要打包的項目導入到這個安裝項目中,有兩種方式:
第一種,自動方式,在解決方案上右擊-〉添加-〉現有項目-〉選擇你要打包的項目,這樣就會把這個項目添加到該解決方案中來,
然後在安裝項目setup上右擊-〉添加-〉項目輸出-〉主輸出,在項目下拉框中選擇剛添加的項目,選擇這樣就會把這個要打包的項目的基本文件添加到左側的應用程序文件夾中,名字為主輸出來自**(活動)。
第二種,手動方式,右擊左側的應用程序文件夾(這個文件夾就是要打包的項目中需要的文件)-〉添加-〉文件或文件夾,主要是exe文件和其他配置文件或數據文件。
在第一種方式中,系統會自動將要打包的項目所依賴的依賴項添加到「檢測到的依賴項」中,如Microsoft .Net Framework,如果沒有就需要手動添加了。
在第二種方式中,依賴項需要手動添加,右擊項目-->添加-->合並模塊,選擇要添加的文件,.Net Framework是必須的,位於:C:\Program Files\Common Files\Merge Moles\ 下。
注意在第一種方式中,如果要打包的項目有配置文件或數據文件等其他,還需要手動將它們添加到應用程序文件夾中。

F. 錯誤(10009): 未找到對應的窗口。 (易語言)

你自己看看你的代碼,顯示不全,顯示
??? () ' <!!!>
這是缺少模塊或者支持庫才顯示那樣的情況,請先確定你沒有少模塊或者支持庫,然後再看下代碼有沒有錯漏的地方

G. Microsoft.Office.Interop.Word.dll

解決此問題,Microsoft 建議從 添加或刪除程序 控制面板中運行 Office 安裝程序:
如果 PIA 不會出現在 GAC 中,運行 Office 安裝程序,然後標記為 從本機運行 應用程序 PIA。 每個 Office PIA 顯示為 .NET 可編程性支持 功能為相應的 Office 應用程序或相應的 Office 組件。
如果 PIA 會出現在 GAC 中,請運行 Office 安裝程序,然後選擇修復 Office 安裝選項。 或者,如果 PIA 不會出現在 GAC 中,可以運行 regasm 實用工具在還原丟失的注冊表項。
在控制面板中雙擊 管理工具 ,然後選擇 Microsoft.NET Framework 1.1 配置 。
選擇 程序集緩存 ,然後單擊在 視圖 菜單上的 程序集 。
在 程序集 列表中右擊 程序集 ,然後單擊 屬性 。

在 程序集屬性 對話框,請注意 程序集名稱 、 版本 並且 公用密鑰標記 。

是例如如果您選擇 Microsoft Word PIA,您注意到下面的屬性值:

程序集名稱: Microsoft.Office.Interop.Word
版本: 11.0.0.0
公用密鑰令牌: 71e9bce111e9429c
啟動 Visual Studio.NET 命令提示符。
在命令提示符下更改到程序集所在的目錄。

在的路徑是採用以下形式:

%windir%\assembly\GAC\ <assemblyname> \ <version> _ _ < 公鑰標記 >
是例如如果您使用 Word PIA 前面提到的屬性值,必須更改到目錄 Word PIA 使用下面的命令的位置:

cd %windir%\assembly\GAC\Microsoft.Office.Interop.Word\11.0.0.0__71e9bce111e9429c
請運行 regasm 實用工具還原 Word PIA 注冊表項:

H. 我用c# windows窗體程序打包選擇從與我的應用程序相同的位置下載系統必備組件報錯

我用2005打包的時候選得時從組建供應商下載那個選項,在別的電腦商裝了可以用的,還做了個卸載功能,都能實現的。

I. mastercam2022安裝程序集組件時出錯

mastercam2022安裝程序集組件時出錯通過以下方法解決。
1、點選開始菜單後的設置。
2、在彈出的菜單中選擇更新和安全。
3、選擇恢復中的立即重啟。
4、重啟後選擇疑難解答。
5、選擇高級啟動中的啟動設置,點擊重啟按鈕。
6、按提示輸入7禁用驅動程序強制簽名後,重新安裝驅動即可。

J. 未能載入文件或程序集「CrystalDecisions.CrystalReports.Engine, Version=10.2.3600.0,

工程名右鍵->屬性,可以看到該工程的一些默認設置,選擇「發布」選項卡,可以看到有一項叫「安裝模式和設置」,單擊該項的「系統必備」彈出一個對話框,選中列表框中相關的程序集,「指定系統必備組件的安裝位置」選擇第二項,然後「確定」。這時候再發布該項目就可以了,生成的安裝文件就包含了需要的程序集。

閱讀全文

與要將程序集標記為系統必備組件相關的資料

熱點內容
ps3文件分割視頻 瀏覽:280
微信圖片一鍵轉發軟體 瀏覽:331
如何判斷s200plc編程電纜 瀏覽:691
太原編程培訓班哪個好 瀏覽:171
樹葉吹奏教程 瀏覽:6
社交app帶來了哪些社會問題 瀏覽:394
如何安裝愛寶8800數據採集器 瀏覽:712
文件保存了怎麼找不到了 瀏覽:476
彩票網站怎麼辨真假 瀏覽:840
pr找不到該文件 瀏覽:963
java移除panel 瀏覽:354
jsp填充jsp 瀏覽:166
海關外貿大數據在哪裡查 瀏覽:381
思特奇java筆試題 瀏覽:121
葫蘆俠在手機中的文件名 瀏覽:813
plc編程應該怎麼收錢 瀏覽:584
c語言中源文件由什麼組成 瀏覽:890
linuxhttpdphp配置文件 瀏覽:607
拆單數據要怎麼保存 瀏覽:17
mac電腦怎樣壓縮文件到100m 瀏覽:645

友情鏈接