Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用新DLL编译应用程序,但使用旧DLL运行_C#_Dll_Dynamic Linking - Fatal编程技术网

C# 使用新DLL编译应用程序,但使用旧DLL运行

C# 使用新DLL编译应用程序,但使用旧DLL运行,c#,dll,dynamic-linking,C#,Dll,Dynamic Linking,我有一个应用程序,它使用不在单独的DLL中实现接口。我最近对此界面进行了更改。但是,我的应用程序不使用此界面中的任何新功能 我的问题是:如果我使用新的DLL和新的更改编译了应用程序,那么使用旧的DLL运行应用程序是否可以。在正确的情况下应该可以 我必须尝试一下,以确保…但事实上,它似乎确实工作的好。我在dll中创建了一个接口,在应用程序中引用了它,并使用反射来检查dll中接口上的方法。然后,修改接口,重新编译dll和应用程序,应用程序可以在旧dll或新dll的接口上检索方法。是否正常取决于您的需

我有一个应用程序,它使用不在单独的DLL中实现接口。我最近对此界面进行了更改。但是,我的应用程序不使用此界面中的任何新功能


我的问题是:如果我使用新的DLL和新的更改编译了应用程序,那么使用旧的DLL运行应用程序是否可以。

在正确的情况下应该可以


我必须尝试一下,以确保…但事实上,它似乎确实工作的好。我在dll中创建了一个接口,在应用程序中引用了它,并使用反射来检查dll中接口上的方法。然后,修改接口,重新编译dll和应用程序,应用程序可以在旧dll或新dll的接口上检索方法。

是否正常取决于您的需求。如果它适用于您的应用程序,并且您不想对其进行更改,则不必进行更改,但通常最好是引用项目而不是dll,以确保以后不会遇到依赖性问题。我实际上是在引用项目,这就是我针对新代码进行编译的原因。但当我部署它时,库的旧DLL仍然存在。我只是想知道我是否也需要部署新的DLL。@Alvin是的。将更新后的引用复制到使用它的项目的bin目录,或者重建依赖项目,它应该找到更新版本,假设引用是从原始生成位置添加的,CopyLocal为true。@M.Babcock,因此即使我的应用程序不使用接口中的新方法,我也无法使用新代码编译并使用旧代码运行?我想我不太明白链接是如何工作的。net@Alvin-不,这是一个选项。这是我在之前的评论中提出的第一个选项。只有当程序集版本没有更改并且没有强名称时,它才起作用。不过,您必须手动复制程序集。它对我来说似乎也很好。我只是担心应用程序稍后会抛出一些运行时异常。好吧,如果它现在不抛出一个异常…它只是一和零,为什么它稍后会抛出一个呢?请查看以下内容: