2012-03-22 71 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升级问题。

相关问题