1

表观服务器安装将表观服务器程序集放在 GAC 中,我用 C:/windows/assembly 看到它们。

此外,在episerver 安装后,所有episerver dll 都存在于C:/Program files/Episerver 中。

当通过episerver部署中心或Visual Studio 2010使用episerver模板创建episerver项目时,我看到新创建的项目的bin文件夹包含很多episerver-dll,这并不奇怪。我想它们是从 C:/Program files/ 复制的。如果我在 Visual Studio 中打开项目,我会看到引用的是那些 dll,而不是来自 GAC 或 C:/program files/episerver 的那些 dll。

好吧,所有这些都非常令人困惑。为什么 Episerver 将 dll 放在 gac 中而不引用它们?处理对 Episerver dll 的引用以在团队中进行开发的最佳方法是什么?

此外,如果 Episerver 会引用 GAC 的 ddl,我将如何在 VS 中看到它。我的意思是,参考的属性是什么?

4

2 回答 2

2

基本上,这只是表服务器部署决策。我将尝试一一解决您的每个问题:

  1. 当您希望用户从“.NET Framework”选项卡的参考对话框中访问 dll 时,将 dll 放入 GAC 非常有用。假设您正在创建一个简单的项目(不是 episerver 之一)并且想要添加 episerver dll。您无需在硬盘驱动器上查找它们,而是参考 GAC 指出的那些。这很容易开发。
  2. 为什么不引用 GAC dll?这是为了更轻松地使用 dll 部署您的解决方案。假设您正在将解决方案部署到服务器。服务器在 GAC 中不会有 Episerver dll(无论如何也不应该有)。所以他们可能会设置“copy local = true”属性以将 dll 复制到输出文件夹中,从而使您的解决方案具有可移植性。此外,GAC 程序集没有“引用” - GAC 仅包含副本以备不时之需,并将引用添加到带有 dll 的“程序文件”文件夹中。
  3. 开发团队的最佳方法是使用 GAC 或在存储库中定义某种“第三方”(“externals”)文件夹并将您的 dll 放在那里(并从那里引用)。第一种方法需要在每台开发机器上安装 Episerver,第二种方法会占用存储库中的一些空间。
  4. 由于 GAC 程序集不能被引用(它们实际上可以,但令人头疼),结果之间几乎没有区别 - 只是不同的路径。
于 2012-04-01T09:07:01.560 回答
2

我们通常创建一个单独的目录来存储所有 .dll 文件并从该目录中引用它们。这意味着所有第三方库和episerver-dll。这样做的最大原因是为了避免新开发人员需要设置项目时的麻烦,以及在引用 GAC 时避免不同版本之间的冲突。

于 2012-04-03T08:54:58.917 回答