1

在某种程度上,我在这里寻找最佳实践。

我有一个由我的许多应用程序共享的公共项目。这个项目有 FlurryAnaylics 和 ATMHud DLLs 作为参考。

如果我不在主项目中引用这些 DLL,应用程序将经常(但并非总是)在调试到设备测试中失败。在调试到模拟器中,我不需要将这些 DLL 添加到主项目中。

所以,问题是:我是否必须在子项目中一直包含对主项目中的 DLL 的引用?

4

1 回答 1

1

只要有可能,我就使用对项目文件(csproj 文件)的引用而不是对程序集(.dll)的引用。它使很多事情变得更容易,例如:

  • 代码导航(IDE);
  • 自动构建依赖(您正在阅读的源代码是您正在构建的源代码,而不是可能不同步的东西);
  • 源代码级调试(即使没有它你也可以拥有它,你肯定是同步的);
  • (更容易)在 Debug|Release|... 配置之间切换;
  • 更改定义(或任何项目级选项);

例如

解决方案1.sln

  • 项目1a.csproj
  • MonoTouch.Dialog.csproj(链接到 ../Common/MonoTouch.Dialog.csproj)

解决方案2.sln

  • Project2a.csproj
  • MonoTouch.Dialog.csproj(链接到 ../Common/MonoTouch.Dialog.csproj)

Common.sln

  • MonoTouch.Dialog.csproj

大型解决方案可能会因此而受到影响(构建性能、跨文件搜索......)。它们越大,每个人都不太可能了解它的每个部分。因此,优势的回报会减少,而不便会随着每个项目的添加而增加。

例如,我不想引用 Mono 中的每个框架程序集(但我个人可以使用 MonoTouch 的所有 SDK 程序集;-)

注意:使用程序集引用不应导致您在设备上调试时出现随机错误。如果您可以创建这样的测试用例,填写错误报告 :-)

于 2012-03-02T01:51:14.527 回答