2013-02-24 72 views

回答

1

我想既不

以下是原因不把源代码:

  • 开发人员可能修改代码不慎
  • 库通常如有更改

而且有2个原因DO包含解决方案的DLL:

  • 使部署更容易
  • 降低使用库的不兼容版本
  • 减少丢失的参照

所以,机会如何的可能性有多大?

  1. 添加一个新的Class Library项目一个独特的名字,说ClassLibrary1,在Build Events页的解决方案

  2. Build页面的项目设置,配置Output path应用输出路径

  3. ,请将以下行添加到Post-build event command line块中:

    del "$(TargetPath)" 
    
  4. 外部DLL复制到它的文件夹,并把它们添加到ClassLibrary1

  5. 设置Copy Local引用到所有的true添加引用

  6. 设置其他项目,它的Project Dependancies,检查ClassLibrary1

  7. 加参考其他项目,从DLL中放入的路径ClassLibrary1

  8. 设置在其他项目中的所有这些附加的DLL Copy Localfalse

因此,项目ClassLibrary1您的解决方案的外部库的中央控制。每当您Rebuild Solution,ClassLibrary1将添加到其References的最新DLL复制到应用程序输出文件夹,并删除它生成的名为ClassLibrary1.DLL的DLL本身。而且,在编译时或运行时应用程序都会使用相同版本的DLL,因此每次释放应用程序时都不需要额外部署或检查每个部署。

1

我想说的是,如果您在最新版本中获得它,则可能会使用所提供的二进制文件,因为源代码可能不稳定。但是如果他们提供版本化的二进制文件,那么他们很可能已经过测试并且很稳定。

这也取决于您是否刚开箱即用或是否要修改它。

0

二进制文件:

  • 更稳定,除非你是铭记拉源
  • 容易的发布版本的

来源:

  • 可以修改
  • 可以调试通过直接进入源代码来使用API

最后一点往往是重要的,所以要准备下载并在你的IDE打开源,即使你开始时只有二进制文件,特别是如果你正在使用的库是年轻或虐待测试。

1

通常我会针对二进制文件进行编译。我在我的解决方案上有一个文件夹供应商/库,或者我只使用NuGet,并编译Againest Dll。

但是,有时我需要调试开源库,当某些事情没有按预期发生时。就在那时,我将链接到源代码(仅用于调试)。

在生产时,我使用二进制文件,因为代码已经过很好的测试。

4

您应该使用二进制文件进行编译。

原因很简单:您的项目和第三方库是不同的项目,并且在您自己的构建过程中编译他人的库可能会引入不必要的复杂性和项目依赖性。

某些库要求您在环境中安装一些工具和插件。

代替包括在构建过程的开放源代码,通常我有一个依赖性或与二进制文件和源代码都在Visual Studio溶液的根LIB目录。当我想调试第三方代码时,我只需打开另一个Visual Studio实例,然后将调试器附加到整个过程中。

认为一些第三方开源库很胖,也许你自己的代码库很小:因为你添加了很多源代码,你的构建过程会延迟很多,因为你只是添加了无用的东西(代码,插件....)。

我更喜欢将构建过程委托给库的作者的原则,在我的情况下,我认为自己是这样的库的使用者:我不需要每次重新编译它。

啊,如果你打算修改源代码,最好的做法应该是联系作者并发送给他/她补丁,以便他/她可以将其包含在官方发行版中。如果没有,你知道:每次笔者发布一个新版本,你必须合并与自己的变化,新的源代码的额外工作...

0

奥卡姆的剃须刀说,如果你不需要修改库,你应该使用二进制文件。

相关问题