使用多个项目编译C#解决方案而不生成.dll

时间:2011-08-02 05:38:02

标签: c# visual-studio-2010

我对C#很新,我的背景主要是C / C ++中的一些OOP。我确定我错误地表达了这一点,这就是谷歌没有帮助我的原因,但是这里也是如此。

我有两个程序使用相同的类库,当我将类库添加到包含其中一个程序的解决方案时,类库被编译为.dll,然后链接到主解决方案。是否可以将库代码直接编译到解决方案代码中?

我可以通过将类库代码导入主项目层次结构来实现这一点,但我不想这样做,因为我必须在两个地方更新对库的任何更改。

我应该将我的类库定义为不同的实体,Visual Studio 2010的解决方案设置中是否有选项可以执行我想要的操作?

4 个答案:

答案 0 :(得分:4)

只需通过引用将包含类库的文件添加到项目中,而不是添加为副本。

答案 1 :(得分:1)

编辑:

您可以使用ILMerge来合并.dll和.exe。你不能静态链接C#中的东西。它必须动态完成。


如果将代码编译为DLL,并将项目添加到另一个项目的引用中,编译器将自动将类库复制到相应的构建文件夹。

当您指定引用时,C#可以自动查找应用程序所需的类,命名空间和函数。不需要导入任何标题等,因为所有数据都存储在DLL中的元数据中,而.net运行时将自动查找它。我还假设您正在使用C#库。

答案 2 :(得分:1)

你在谈论静态链接 有一个工具ILMerge允许你这样做。
一般来说,在C#中这不是一个问题,因为C#Assemblies / dlls在程序集头中提供版本信息(你可以控制它)在Visual Studio中),因此没有dll地狱的风险。

答案 3 :(得分:0)

正如其他回答者已经说过的那样,引用程序集只是复制到输出文件夹而不是编译成可执行文件是正常的.net行为。

有很多方法可以在编译后将它们合并到.exe中,但这不是默认设置,你需要额外的工具。
如果您对此感兴趣,可以查看ILMergeNETZ