我在托管代码(主要是 C++/CLI)中构建了一个工具,有两个版本,一个“普通用户”版本和一个“专业”版本。
两个版本之间的核心代码相同的事实给我带来了一些麻烦,因为我想将生成的工具打包为单个程序集 (DLL),并且我不想包含通用的 .cpp 文件两个版本工具的项目中的代码。我宁愿有一个用于公共代码的项目和一个用于每个版本的工具的项目,并且让每个版本的工具项目都依赖于公共代码并根据需要链接它。
在非托管 C++ 中,我会通过将公共代码放在静态库中并将工具的两个版本链接到它来做到这一点。我似乎无法让它在 C++/CLI 中工作。似乎我被迫将公共代码构建到 DLL 程序集中,这导致了比我想要的更多的 DLL。
因此,总而言之,我无法弄清楚如何在一个项目中构建公共代码并将其与每个最终产品项目链接以生成两个都包含公共代码的单个 DLL 程序集。
我可能做错了什么,但我试图弄清楚如何使用 netmodules 和其他东西来做到这一点,但我就是无法让它工作。最后,我让它工作的唯一方法是告诉链接器链接通用代码程序集的构建产品,而不是链接有效但有点像 hack 恕我直言的结果。
无论如何,有人对我应该如何解决这个问题有任何建议吗?
编辑:我想我应该提到这样一个事实,即生成的程序集不是 100% 托管代码,它们包含托管和非托管代码的混合,这可能与使用 C++/CLI 生成的程序集很常见......