更新DLL而无需使用它重新编译应用程序

时间:2016-12-25 18:41:28

标签: c# dynamic dll console .net-assembly

我有一个C#解决方案,里面有3个项目:

1)实现TCP服务器的控制台应用程序

2)实现TCP客户端的控制台应用程序

3)服务器和客户端都使用的DLL文件

我的目标是不必在DLL更改时重新编译整个解决方案。将DLL添加到对两个项目的引用后,“复制本地”值为True。有了这个,所有项目都必须在DLL更改时重新编译,但至少它可以工作。

如果我将其设置为False,则会出现以下问题: c:\ Users \ Attila \ Documents \ Visual Studio 2015 \ Projects \ TcpCommunicator \ TcpServer \ bin \ Debug> TcpServer.exe

  

未处理的异常:System.IO.FileNotFoundException:无法加载   文件或程序集'TcpCommonElements,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = 98782ff4b5018a35'或其依赖项之一。该   系统找不到指定的文件。在   TcpServer.Server.Main(String [] args)

我已在App.config文件中为服务器和客户端添加了以下代码段,但似乎没有影响:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="TcpCommonElements"
                          publicKeyToken="98782ff4b5018a35"
                          culture="neutral" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

我试着让装配不是强名,但无济于事。 dll存在于项目中引用它的目录中。

我在俯瞰什么?或者我对动态库的理解存在缺陷?

编辑:只是为了澄清,公共接口不会改变。假设修改正在从

切换
System.Console.WriteLine("---");

System.Console.WriteLine("+++");

0 个答案:

没有答案