2012-03-22 65 views
0

然後更新Windows窗體應用程序,其中控制用於引用新的DLL自定義控件如何更改自定義控件的DLL和項目及解決方案的名稱,並用它

我創建了一個自定義的控制我在我寫的Windows窗體應用程序中使用。 我創建了一個單獨的項目,所以我可以在多個應用程序中使用該控件。它是用C#編寫的,使用VS 2010。 我瞭解它的方式自定義控件駐留在DLL中。 我將控件導入到當前應用程序中的工具箱中,它看起來工作正常。 對於修訂控制和適當的命名目的,我需要重命名項目&解決方案& DLL(我想我希望它們都具有相同的名稱)用於創建自定義控件。 這將改變控件駐留的DLL的名稱......我認爲。 我grepped我當前的應用程序,我發現舊的DLL仍然存在的兩個引用,但因爲我現在重命名該項目有一個DLL的新名稱。 我試圖從最近命名的DLL中導入控件,但是當我試圖將引用舊DLL替換爲新DLL時,它引發了各種莫名其妙的破壞 如何讓我當前的應用程序使用相同的舊的控制,但從一個不同的命名空間?

回答

0

我們爲自己的控件處理這個特定問題的方式以及幾個第三方控件供應商這樣做的方式是保持命名空間不變,但只需更改DLL名稱(即MyControl.v11.1 .DLL)。

然後,當需要升級控件時,可以編輯項目文件,更改DLL名稱,然後關閉並運行。

爲了在處理控件和第三方控件時儘可能平滑,我們使用了一些技巧。

首先,我們總是將一個版本的DLL複製到與項目相關的目錄中。這樣,如果開發人員將他們的機器升級到更新的版本,它將不會無意中內置到應用程序中。

其次,我們始終確保項目中的DLL引用和licenses.licx文件已刪除版本和公鑰信息。

最後,我們手動編輯項目文件以確保項目不需要特定版本,並且它引用程序集的本地副本。

下面是我們的項目文件與上述所有應用的入口的例子:

<Reference Include="Controls.v11.1"> 
    <HintPath>..\..\Assemblies\Controls.v11.1.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
</Reference> 

我們已經成功地使用這種方法對我們的項目至少8年,因爲我們實現了這個方法,我們沒有任何DLL升級問題。

相關問題