我在Visual Studio Solution上有多个项目。所有项目都是c#.net应用程序,但有例外。 这称为实用程序,并构建为类库。 每个项目都引用实用程序项目。
是否有一种方法不能由实用程序类创建的dll不能在一个位置上分别为每个项目构建?
Visual Studio解决方案
Solution
- Project 1 (references utility)
- Project 2 (references utility)
- Project 3 (references utility)
- Project Launcher (references utility)
- Project utility
当前版本文件夹结构
Main Folder
- Launcher.exe
- Utility.dll
-> Project 1 Folder
- 1.exe
- Utility.dll
-> Project 2 Folder
- 2.exe
- Utility.dll
-> Project 3 Folder
- 3.exe
- Utility.dll
想要的构建文件夹结构
Main Folder
- Launcher.exe
-> Project 1 Folder
- 1.exe
-> Project 2 Folder
- 2.exe
-> Project 3 Folder
- 3.exe
-> References Folder
- Utility.dll
编辑: 这些应用程序不会同时运行,并且需要与同一实例进行通信。 使用共享项目解决了我的问题。 how-to-make-net-class-library-linkable-no-dll
答案 0 :(得分:0)
可能的副本:Can the same DLL data be shared by 2 different processes?
正如您在当前构建结构中所述:当两个应用程序使用DLL时,它们之间不会共享DLL。每个应用程序都加载自己的副本,并拥有自己的内存空间和变量。
这是正常现象。如果要使两个应用程序进行通信并在它们之间共享数据,则需要使用某种形式的进程间通信来回传递数据。在这种情况下,Windows Communication Foundation是一个不错的选择。