我有一个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("+++");