❶ 如何在vs2017解決方案下添加引用
在使用VS2017解決方案時,可能會遇到「找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服務的實例」錯誤。網上搜索後發現了一種解決方法,經過實踐驗證確實有效。具體步驟如下:
首先,打開VS2017目錄下的 Developer Command Prompt for VS 2017。然後,將定位到vs2017安裝目錄下的 /Common7/IDE/PublicAssemblies 文件夾。接著,在該文件夾中輸入命令:gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll。控制台會顯示「程序集已成功添加到緩存中」的提示。
完成上述操作後,重啟VS2017。此時,相關錯誤應該已經解決,可以正常使用。這個方法對於解決類似的問題可能也有幫助,適用於遇到相同錯誤的開發者。
值得注意的是,gacutil 是一個用於安裝和卸載程序集到全局程序集緩存的命令行工具。通過使用它,可以將 Microsoft.VisualStudio.Shell.Interop.11.0.dll 程序集添加到全局程序集緩存中,從而解決找不到所需介面實例的問題。
另外,如果在其他版本的Visual Studio中遇到類似問題,也可以嘗試類似的解決方法,只需將命令中的版本號調整為對應的Visual Studio版本即可。例如,對於VS2019,可以使用 Microsoft.VisualStudio.Shell.Interop.14.0.dll。
總之,通過以上步驟,可以有效地解決VS2017中找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服務實例的問題。希望對遇到同樣問題的開發者有所幫助。
❷ 如何把C#編譯成的DLL放在一個地方作為全伺服器不同域名調用
使用全局程序集GAC
關於GAC,復制點東西給你:
Gac就是C:\WINDOWS\assembly文件夾,中文叫全局程序集緩存,把dll放到這個文件夾里,bin下面就不用放dll了,目的是為了程序集共享。
如何把asp.net網站部署到Gac裡面
首先在你Visual Studio的安裝目錄里找到sn.exe文件,放到cmd里執行
sn.exe -k C:\testKey.snk
這樣就會在你C盤的目錄下生成testKey.snk密鑰文件
然後
VS2003
在網站項目的AssemblyInfo.cs裡面的[assembly: AssemblyKeyFile("")]做類似如下配置
[assembly: AssemblyKeyFile(@"C:\testKey.snk
")]
注意這里寫絕對路徑最好,相對路徑很難寫
生成網站
這時網站的dll就是個強命名程序集,
打開程序---管理工具---.net framework1.1(或2.0)配置
我的電腦,程序集緩存,右鍵添加,把剛生成好的dll添加進去,無錯的話就添加成功了。
這時你可以把自己bin目錄下的dll刪了,但這時網頁還打不開,對webconfig做如下修改
<compilation
defaultLanguage="c#"
debug="true"
>
<assemblies>
<add assembly="youDllname, Version=1.0.2811.20076, Culture=neutral, PublicKeyToken=c52d31a7559027ce"/>
</assemblies>
</compilation>
至於assembly後面的dll全名怎麼寫,你可以用反編譯工具Reflector.exe去查你的dll,也可以在.net framework1.1(或2.0)配置裡面找到你的dll查屬性得到。
配好後網頁就應該可以打開了,如果打不開,重啟下iis
VS2005
要麻煩一點,你生成好snk文件後,第一步,當你確定好網站程序不改了後,點網站發布,在發布裡面用固定命名和單頁程序集,和對預編譯程序用強命名,下面有一個可以選擇snk文件的按紐,把snk文件選進去,發布網站,
然後再用上面的方法把bin目錄裡面的dll加到Gac裡面,這時可以把bin目錄裡面的dll刪了。然後配製webconfig如下
<configuration>節點下
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="CE.EIP.CRMBusinessEntities" fullName="CE.EIP.CRMBusinessEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=C75F352AFF88DAD1"/>
</assemblyBinding>
</runtime>
這時網站應該可以運行。qualifyAssembly 在2005裡面是通知運行時去Gac找dll的方法
基本上是這樣,但你第一次很可能操作成功不了,所以要注意如下問題
webconfig永遠是在你部署時修改,你要是在開發時修改就有錯
當你都配製好後,要重啟下iis,你更新dll的時候最好也重啟下iis,為什麼呢?
因為運行時是先去找C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files
下面的一個叫root 文件裡面的dll,如果找到了,就不會去Gac裡面找了,重啟IIS的目的就是為了把裡面的文件刪除
並不是所有dll都可以放到Gac裡面的,比如ajax.dll系列,因為這個dll會生成xml文檔,dll在GAC裡面,那xml會生成在哪裡呢?所以凡是要生成xml文檔的dll都不適合放進去(當然也有解決方案不過麻煩)
❸ 如何在 Visual C#NET 中將程序集安裝到全局程序集緩存中
1. 管理工具->Microsoft.NET Framework 2.0 配置->管理->我的電腦->程序集緩存->選中右鍵"添加"->將程序集添加到程序集緩存。
2. 手動將要安裝部署的dll文件拖至系統目錄windows下的assembly文件夾下(一般為C:/windows/assembly),此種方法不便於在安裝部署時使用。
3. 使用gacutil.exe工具安裝:gacutil -i "要注冊的dll文件全路徑"。
"gacutil.exe」工具為.NET自帶工具(C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin)
在開始運行中輸入"cmd」進入命令窗口,通過CD選擇到"gacutil.exe」文件所在的目錄,如在命令行輸入: gacutil -i D:/Microsoft.SharePoint.dll
❹ vb.net引用Dll的問題
上級目錄不可以,但是為了保證程序路徑改變,引用不會被破壞。可以有幾個方法:
1.將DLL文件放在程序同級目錄
2.將DLL文件放在程序子目錄
3.將DLL文件放在System32目錄下(系統目錄,可以直接引用DLL)
4.可以將DLL文件打包成資源文件,融合到EXE程序中,每次執行判斷同級目錄是否有DLL文件,不存在,釋放資源文件。