Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自己的基于.NET的框架的不同项目_.net_Visual Studio_Project Management_Release - Fatal编程技术网

使用自己的基于.NET的框架的不同项目

使用自己的基于.NET的框架的不同项目,.net,visual-studio,project-management,release,.net,Visual Studio,Project Management,Release,我正在寻找有关使用您自己开发的代码库时适当的发布管理的信息。我们正在使用VisualStudio2010,在.NET中开发并使用TFS。让我描述一下情况 我们正在与一个团队合作进行不同的项目,这些项目都有自己的计划/产品。所以我们开始考虑重用代码,并将它们放在一种框架或库中。为此,我们创建了一个单独的解决方案,其中包含不同的项目和它们之间的依赖关系。我们称之为“平台” “平台”的解决方案包括以下项目: 伐木 日志记录。测试 乌提尔斯 图表控制 日志依赖关系 Utils依赖 本地化 日志依

我正在寻找有关使用您自己开发的代码库时适当的发布管理的信息。我们正在使用VisualStudio2010,在.NET中开发并使用TFS。让我描述一下情况

我们正在与一个团队合作进行不同的项目,这些项目都有自己的计划/产品。所以我们开始考虑重用代码,并将它们放在一种框架或库中。为此,我们创建了一个单独的解决方案,其中包含不同的项目和它们之间的依赖关系。我们称之为“平台”

平台”的解决方案包括以下项目:

  • 伐木
  • 日志记录。测试
  • 乌提尔斯
  • 图表控制
    • 日志依赖关系
    • Utils依赖
  • 本地化
    • 日志依赖关系
  • 本地化测试
事实上,我们已经有20个项目,项目之间的依赖性更多,但这应该让事情变得清楚

假设我们现在有两个项目A和B。它们如下所示:

项目A
  • 对日志记录的引用
  • 对UTIL的引用
  • 对图表控件的引用
  • 关于本地化的参考
  • 达尔
    • 日志依赖关系
  • 主应用程序
    • DAL依赖
    • 日志依赖关系
    • Utils依赖
    • 图表控件依赖项
    • 本地化依赖
项目B
  • 对图表控件的引用
  • 关于本地化的参考
  • 主应用程序
    • 图表控件依赖项
    • 本地化依赖
我们如何管理这种结构?我看到了几个问题,但没有真正的答案

  • 我们是否在平台的项目A和B中包含DLL或代码
  • 我们是否签入DLL并复制到不同的项目?分支是否有益
  • 版本呢?假设Project A使用Logging V.1.0.0.0,这与同样使用Logging V.1.0.0.0的ChartControl配合得很好。某一天,我们决定使用新版本的ChartControl,它也使用新版本的Logging V.2.0.0.0。我如何确保项目A也不会被迫开始使用日志V.2.0.0.0
  • 我们可以决定将平台作为一部分发布,不管是什么都可以。但是我们如何管理所有这些DLL的构建呢。手动更新所有项目中的版本号需要大量工作,从所有不同的bin文件夹中提取版本号需要更多的工作
  • 我们如何在项目中整合“平台”。我们是否创建一个引用文件夹并将所有DLL放在其中,以便在解决方案中引用它们
  • 我们如何跟踪依赖关系?如果整个平台只有一个版本,我们如何丢弃不需要的DLL。例如,项目B对UTIL不感兴趣,但间接对日志记录感兴趣
  • 如果我们将平台作为一个整体发布,那么微小的更改将产生一套完整的新DLL。例如,Utils项目中的更改也将导致日志记录、本地化等的新版本。。。除非没有变化
我还试图搜索互联网,并进行了一些内部讨论,但没有提供真正的答案。我在Stack Overflow上发现的是库和框架之间的定义差异,在MSDN上,您可以阅读很多关于DLL和GAC的内容


任何最佳实践、工具、经验。。。欢迎使用。

我将使用包含所有代码的分层目录结构,以及库DLL的发布版本;使用相对路径引用其他DLL或项目。这将使您能够根据需要灵活地维护和更新依赖项

我们是否在平台的项目A和B中包含DLL或代码

将所有内容都签入TFS。每个项目都可以通过引用DLL或项目文件来决定是否解析其依赖关系

我们是否签入DLL并复制到不同的项目?分支是否有益

签入DLL,但将其保存在源代码管理结构中较低级别的共享资源文件夹中:

/Shared
    /DLLs
        /Platform
            /Logging
                /V1.0.0.0
                    /Debug
                    /Release
                /V2.0.0.0
            /ChartControl
/Source
    /Platform
        /Logging
        /ChartControl
    /Projects
        /ProjectA
        /ProjectB
版本呢?假设Project A使用Logging V.1.0.0.0,这与同样使用Logging V.1.0.0.0的ChartControl配合得很好。某一天,我们决定使用新版本的ChartControl,它也使用新版本的Logging V.2.0.0.0。我如何确保项目A也不会被迫开始使用日志V.2.0.0.0

如果需要不同的项目引用同一库的不同版本,请签入每个版本。所以ChartControl可以引用/Shared/DLLs/Logging/V1.0.0.0,而projecta可以引用V2.0.0.0。(不过,我倾向于对此提出警告,因为这可能会变得混乱;如果新的日志记录版本使用不同的文件/数据库格式会怎么样?)

我们可以决定将平台作为一部分发布,不管是什么都可以。但是我们如何管理所有这些DLL的构建呢。手动更新所有项目中的版本号需要大量工作,从所有不同的bin文件夹中提取版本号需要更多的工作

为了自动化构建任务,一定要考虑持续集成服务器(巡航控制、快速构建、Jenkins等)

我们如何在项目中整合“平台”。我们是否创建一个引用文件夹并将所有DLL放在其中,以便在解决方案中引用它们

我认为这是正确的做法。引用DLL使您能够遵守平台的单独开发/测试/发布流程

我们如何跟踪依赖关系?如果整个平台只有一个版本,我们如何丢弃不需要的DLL。例如,项目B对UTIL不感兴趣,但间接对日志记录感兴趣

每个项目所有者必须跟踪其自身的依赖关系;只有项目B的所有者知道是否引用UTIL