然后更新windows窗体应用程序,其中的控件用于引用自定义控件的新DLL。
我创建了一个在我编写的windows窗体应用程序中使用的自定义控件。我创建了一个单独的项目,以便可以在多个应用程序中使用该控件。它是使用VS2010用C#编写的。据我所知,自定义控件驻留在DLL中。我将该控件导入到我当前应用程序的工具箱中,它似乎工作得很好。为了修订控制和适当的命名目的,我需要重命名我用来创建自定义控件的项目& solution & DLL (我想我希望它们都具有相同的名称)。这将更改控件驻留在……中的DLL的名称我认为。我点击了当前的应用程序,发现了两个对旧DLL的引用,它仍然存在,但由于我现在重命名了项目,所以有一个具有新名称的DLL。我试图从新命名的DLL导入控件,但当我试图将对旧DLL的引用替换为新的DLL时,它造成了各种莫名其妙的破坏,如何让我的当前应用程序使用相同的旧控件,但来自不同的命名空间?
发布于 2012-03-23 07:49:00
我们为我们自己的控件处理这个特定问题的方式,以及一些第三方控件供应商这样做的方式,是保持命名空间不变,但只需更改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升级问题。
https://stackoverflow.com/questions/9832128
复制相似问题