我两个版本,一个“普通用户”版本和“亲”版本建立在托管代码(主要是C ++ / CLI)的工具。

事实上,核心代码是两个版本的缘故,我有点麻烦之间相同的,因为我要打包的所得工具作为一个单一组件(DLL),我不希望有包括cpp文件在工具的两个版本的项目通用代码。我宁愿有共同的代码的项目和工具的每个版本的项目,并有相应的工具项目的每个版本取决于公共代码,并根据需要在链接。

在非托管C ++我通过将共同的代码在静态库和连接工具将它的两个版本做到这一点。我似乎并没有能够得到这在C ++ / CLI工作。看来,我被迫建立共同的代码放到一个DLL组件,并导致更多的DLL的比我想。

因此,总的来说,我不能工作了如何构建公共代码在一个项目中,并与每一个最终产品项目的链接它产生两个单个DLL组件既包括通用代码。

我可能做错事,但我试图找出如何做到这一点使用netmodules和任何,我只是无法得到它的工作。最后,我得到它的工作的唯一办法是告诉链接链接通用代码组件的构建产品,而不是它的工作原理,但一个黑客位恕我直言的结果。

总之,没有任何人有我应如何解决这个问题有什么建议?

<强>编辑:我想我应该提到的事实,所产生的组件不是100%托管代码,它们包含的托管和非托管代码的混合原样,可能的是,与制造组件相当普遍用C ++ / CLI ...

有帮助吗?

解决方案

如果你在所有的DLL恼火,下载的 ILMerge 。我用这个来在一起的多个DLL的捆绑成一个易于使用的.EXE为我的客户。

其他提示

至于说ILmerge是单向的,个人如果您bundeling一些exe文件有很多的dll的我喜欢

您可以使用模块。可以使用组件的接头,al.exe它们连接成组件。

如果我正确认识这一点,你有一个包含两个项目的解决方案。对于“普通”用户的一个项目,为“亲”的用户一个项目。 Visual Studio中,您可以从其他项目添加一个“链接”到另一个文件源。如果你的“亲”版本将具有真正的核心代码文件,并在你的“正常”的版本,你添加现有 - >找到“亲”项目中的文件,并通过添加按钮,点击向下箭头并选择“添加链接”。现在你有一个文件,它是从字面上两个项目之间的相同。

这就是净编译过程的缺点是,你不能拥有的东西静态库和持有在一起的头文件,一切都在一个大的dll文件和共享信息的唯一方式召开是要么建立一个共同的DLL和从其他组件引用它或复制在每个DLL的代码(可能通过复制/链接的.cs项目之间的文件)。

请注意第二个方式将宣布不同的类型,即使它们具有相同的名称。这将咬你的屁股与东西一样远程处理(或任何需要的进程之间投射到特定的共享接口)。

Remotesoft蝾将钩你。它基本上是一个本地编译和连接。

当使用单(或Cygwin的是一个选项) mkbundle 也可以是一个有效的选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top