如何更改自定义控件的 DLL 和项目和解决方案的名称并使用它



然后更新windows窗体应用程序,其中控件用于引用自定义控件的新DLL

我创建了一个自定义控件,用于我编写的windows窗体应用程序。我创建了一个单独的项目,这样我就可以在多个应用程序中使用该控件。它是使用VS 2010用C#编写的。按照我的理解,自定义控件位于DLL中。我将控件导入到当前应用程序中的工具箱中,它似乎运行良好。为了修订控制和适当的命名目的,我需要重命名项目&解决方案&DLL(我想我希望它们都有相同的名称),我用来创建自定义控件。这将更改控件所在的DLL的名称……我认为。我下载了当前的应用程序,发现了两个对旧DLL的引用,该DLL仍然存在,但由于我重命名了该项目,现在有了一个新名称的DLL。我试图从新命名的DLL中导入控件,但当我试图将对旧DLL的引用替换为新DLL时,它造成了各种莫名其妙的破坏如何让我当前的应用程序使用相同的旧控件,但使用不同的命名空间?

我们为自己的控件处理这个特定问题的方式,以及一些第三方控件供应商这样做的方式,是保持命名空间不变,但只更改DLL名称(即MyControl.v1.1.DLL)。

然后,当需要升级控件时,您可以编辑项目文件,更改DLL名称,然后关闭并运行。

在处理我们的控制和第三方控制时,我们使用了一些技巧,以使其尽可能顺利。

首先,我们总是将DLL的一个版本复制到与项目相关的目录中。这样,如果开发人员将他们的机器升级到更新的版本,它就不会意外地内置到应用程序中。

其次,我们始终确保项目和licenses.licx文件中的DLL引用已删除版本和公钥信息。

最后,我们手动编辑项目文件,以确保项目不需要特定版本,并且它引用了程序集的本地副本。

以下是我们项目文件中应用了上述所有内容的条目示例:

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

我们已经成功地将这种方法用于我们的项目至少8年了,自从我们实施这种方法以来,我们没有遇到任何DLL升级问题。

最新更新