[英]How to change the name of the DLL & project& solution of a custom control and use it
然后更新Windows窗體應用程序,其中該控件用於引用自定義控件的新DLL
我創建了一個自定義控件,該控件在編寫的Windows窗體應用程序中使用。 我創建了一個單獨的項目,因此可以在多個應用程序中使用該控件。 它是使用VS 2010用C#編寫的。 據我了解,自定義控件駐留在DLL中。 我將控件導入到當前應用程序中的工具箱中,看來工作正常。 為了進行版本控制和適當的命名,我需要重命名用於創建自定義控件的項目,解決方案和DLL(我想我都希望它們具有相同的名稱)。 這將更改控件所駐留的DLL的名稱……我認為。 我略過當前的應用程序,發現對舊DLL的兩個引用仍然存在,但是自從我重命名項目以來,現在有了一個使用新名稱的DLL。 我試圖從新命名的DLL導入控件,該DLL起作用了,但是當我嘗試將對舊DLL的引用替換為新的DLL時,它造成了各種各樣的莫名其妙的破壞。但來自不同的命名空間?
我們為自己的控件處理此特定問題的方式以及一些第三方控件供應商執行此操作的方式是保留名稱空間不變,而只是更改DLL名稱(即MyControl.v11.1.dll)。
然后,是時候升級控件了,您編輯項目文件,更改DLL名稱,然后就可以運行了。
我們使用了兩個技巧,以便在處理我們的控件和第三方控件時使之盡可能平滑。
首先,我們總是將DLL版本復制到相對於項目的目錄中。 這樣,如果開發人員將其計算機升級到最新版本,則不會意外將其內置到應用程序中。
其次,我們始終確保項目和licenses.licx文件中的DLL引用均已刪除版本和公共密鑰信息。
最后,我們手動編輯項目文件以確保該項目不需要特定版本,並且引用了程序集的本地副本。
這是應用了以上所有內容的項目文件條目的示例:
<Reference Include="Controls.v11.1">
<HintPath>..\..\Assemblies\Controls.v11.1.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
我們已經成功將這種方法用於我們的項目至少8年,並且自從實施這種方法以來,我們沒有任何DLL升級問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.