【问题标题】:Subversion and ASP.NET Website Project's Bin folderSubversion 和 ASP.NET 网站项目的 Bin 文件夹
【发布时间】:2010-03-04 06:31:59
【问题描述】:

我们正在从 VSS 更改为 Subversion,并且我们在 Subversion Repo 上有一个网站项目。我们删除了 Bin 文件夹,因为它会导致各种混乱的树冲突,因为我们的开发解决方案包含网站项目所依赖的一些类库项目(在我们的解决方案中设置为项目引用)。我们在网站的 Bin 文件夹中也有几个 3rd 方库 DLL。

我们项目的下一阶段涉及设计师修改我们网站的主题。我希望他能够在 VS 2005 中打开网站项目,在他的工作副本上修改他需要的 CSS 文件,并在他的本地主机上测试他的文件。他需要最新的 DLL 文件才能执行此操作。

是否可以将 Bin 文件夹 DLL 添加到 subversion,并配置 TortoiseSVN 或 subversion,以便我们可以提交最新的 DLL(开发人员解决方案文件中的项目依赖项)但在更新时忽略它们(我猜是每个客户端)?让我们的第 3 方网站依赖于 Subversion 也会很方便。

【问题讨论】:

  • 您能给我们提供一个您项目当前结构的简略示例吗?

标签: asp.net svn tortoisesvn asp.net-2.0


【解决方案1】:

您不应将第 3 方程序集放入 bin 文件夹中。实际上,您应该假设 bin 文件夹将在每次构建之前清空。它是放置构建输出的地方,而不是放置输入的地方。

将这些二进制文件放入其他文件夹,可能是“3rdPartyAssemblies”。使用对这些文件的文件引用,它们将被复制 bin 文件夹中,作为输出。

【讨论】:

    【解决方案2】:

    难道不能像这样构造它吗:

    Trunk/
      WebApp/ 
      ClassLibrary1/
      ClassLibrary2/
      ClassLibrary3/
      3rdPartyDlls/
      build.bat
    

    Web 应用程序将所有类库和第 3 方 dll 拉入 WebApp 的 Bin 文件夹(所有这些都将通过相关链接引用)。然后,您可以设置 TortoiseSvn 在更新时通过 client side hooks 调用 build.bat 文件。您还可以在设计者的机器上设置 IIS 以指向 WebApp 目录。

    正如其他用户所指出的,您可以使用svn externals 来拉入这些企业级类库。

    【讨论】:

    • 首先,感谢您的回答。这里有一些 ClassLibraries 是企业级的,所以这似乎并不理想。
    • @JustinP8 使用树结构通过 svn:externals 引用您的企业范围的 ClassLibraries。 svn:external 应该是一个发布分支,以便您可以管理外部的版本控制。
    【解决方案3】:

    其他人关于“3rdParty”的说法是正确的。

    您还可以考虑使用 svn:externals 来拉入相关目录,包括“3rdParty”程序集目录,甚至可以通过签入来触发构建的输出目录以确保流通。

    【讨论】:

      【解决方案4】:

      我们采取的方法是,而不是将库放在同一个解决方案中,它们有单独的解决方案,我们(嗯,我们的构建服务器)编译它们并将编译后的 DLL 检查到“依赖项”下的源控制中,即 总是 映射到所有开发人员机器上的 C:\Dependencies。然后,我们使用网站项目中对该文件夹的文件引用。

      这样您就可以将网站项目连同 C:\Dependencies 的副本一起提供给您的设计师,这样它们就不会更明智了 =)

      【讨论】:

      • 迁移/学习需要一段时间。我们 Jr. 开发人员正在采取主动,让这一切顺利进行。我很确定 CI 和自动化构建肯定会缓解其中的一些问题。当我们做到这一点时,我相信会采取类似的方法。将 Dependencies 文件夹放在 Subversion 上不是最好吗?
      • @JustinP8 - 是的,它会 - 我们有其他原因为什么我们的依赖项必须存在于 C:\Dependencies 中(不要问!),因此它们处于受控状态,但副本取自它,到那里,在每次构建之后。
      【解决方案5】:

      我们不对 bin 文件夹进行源代码控制,因为它会在您每次运行编译时更新。相反,我们将第 3 部分库的引用保存在受版本控制的单独文件夹中,我们在项目中引用了该文件夹。

      通过此设置并使用“copy local = true”,它们会在编译时自动添加到 bin 中。

      其次,我们只会在更新第三部分二进制文件时提交新的二进制文件。

      这种方法也可以用于您的内部 dll,这样您的设计师就可以编译他的视觉工作室解决方案,这样任何相关的 dll 都将被放入他的 bin 文件夹中,从而在本地创建一个功能站点他的机器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 2011-02-03
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 2010-12-15
        • 1970-01-01
        相关资源
        最近更新 更多