如何获取同一应用程序的多个版本以使用相同版本的程序集? C#

时间:2017-05-17 08:42:09

标签: c# .net dll

我有一个网络应用程序" App1"其中有许多版本都在同一台服务器上同时托管(每个版本都有自己版本的程序集" AssemblyA")。该应用程序能够上传c#文件并根据需要编译和运行它们,这些c#文件可以使用" AssemblyA"。

我想创建一个新的程序集(" AssemblyB"),除了" AssemblyA"之外,这些c#文件都可以使用。 AssemblyB必须引用与这些c#文件相同的AssemblyA版本。

我无法控制何时发布新版本的App1或更新现有版本,几乎没有权力更改App1中的源代码。我不能简单地将新的AssemblyB项目添加到App1解决方案中并将整个部分一起部署。

当更新AssemblyB时,我希望有一些方法来部署它,以便在所有版本的App1中即时生成的所有c#文件都将使用这个新版本。

甚至可以这样做吗?是否有一些全局位置,我可以部署我的AssemblyB .dll并让它使用正确版本的AssemblyA,具体取决于托管c#代码的App1的版本?(例如GAC,或者这是一个非常糟糕的主意? )

我可以更改App1源代码以允许它加载最新版本的AssemblyB并将其提供给c#文件,但如果是这样,我将在哪里存储最新版本的.dll供它使用?

提供的答案可能取决于App1的版本数量。因此,如果只有两个版本的App1和10,000+版本,请考虑如何做到这一点。

2 个答案:

答案 0 :(得分:1)

我认为你应该对总流量尝试一些自动机制,从更新版本到生成dll和部署。它可以通过shell或jenkins等工具完成。

答案 1 :(得分:0)

最终解决方案非常简单。我只需要将AssemblyB.dll复制到任何版本的bin文件夹中,其中有上传引用它的c#文件。由于AssemblyA和AssemblyB位于同一位置,因此AssemblyB似乎只适用于任何版本的AssemblyA。它不需要对App1中的代码进行任何更改。我应该首先尝试最简单的事情,不要假设“不能那么简单”