Entity framework 具有分支依赖性的分支项目的TFS策略
我已经做了很多关于我应该如何处理我的问题的研究,但是我似乎无法掌握我想做什么。更重要的是,我需要创建一个解决方案,使我的团队的其他成员能够相对容易地遵循。我尝试过的解决方案只适用于一个开发人员,但会导致团队成员之间的混淆 我目前有一个分支结构,如下所示:Entity framework 具有分支依赖性的分支项目的TFS策略,entity-framework,tfs,continuous-integration,Entity Framework,Tfs,Continuous Integration,我已经做了很多关于我应该如何处理我的问题的研究,但是我似乎无法掌握我想做什么。更重要的是,我需要创建一个解决方案,使我的团队的其他成员能够相对容易地遵循。我尝试过的解决方案只适用于一个开发人员,但会导致团队成员之间的混淆 我目前有一个分支结构,如下所示: 项目名称 主要 演示项目 人口结构 质量保证 演示项目 人口结构 发展 演示项目 人口结构 我想将DemoEntityFramework拉出来,并以相同的方式将其分支,Main/QA/Dev。我需要将其分支的原因是,分支之间
- 项目名称
- 主要
- 演示项目
- 人口结构
- 质量保证
- 演示项目
- 人口结构
- 发展
- 演示项目
- 人口结构
- 主要
我见过有人建议NuGet处理依赖关系。我可以这样做,但我需要一种方法,让每个分支在合并时提取各自的依赖项而不中断。最好的解决方案是使用NuGet在您的情况下处理依赖项。您可以在一个数据库中为每个分支定义不同的包源
我之所以选择这个答案,是因为这是一种不同于正常的方法,但它似乎最适合我的情况
一旦我实现了NuGet方法,我真的很喜欢它,但是我真的不喜欢NuGet配置之间存在差异的想法。对于某些人来说,意外地在分支之间合并该文件是非常容易的,并且可以防止在整个分支上进行合并
我已经在我的项目中定义了不同的配置,以便对连接字符串等进行转换。我真希望有一种方法可以对项目引用做同样的事情。结果是。根据选择的配置,我现在可以让它指向不同的DLL路径。即使它们不在同一个层次中。现在,我只需根据配置指向相应的分支
下面是一个我在.csproj中更改的示例
<ItemGroup Condition="'$(Configuration)' != 'Dev'">
<Reference Include="MyReference, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>C:\Example\Prod\MyReference.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Dev'">
<Reference Include="MyReference, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>C:\Example\Dev\MyReference.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
C:\Example\Prod\MyReference.dll
真的
C:\Example\Dev\MyReference.dll
真的
一段时间过去了,随着时间的推移,我们的战略也随之改变。如果你愿意的话,我一直在寻找更好的编程“标准”,并且遇到了依赖注入。我一直都知道这件事,甚至在过去也遇到过。但我只是触及表面
我们的新方法就像Patrick MSFT和Nuget提到的那样有效。除此之外,现在,我已经将各个区域的每个不同EF项目组合到一个解决方案中,并在每个成功构建中部署到Nuget
然后,在我的“DemoProject”中,我使用依赖项注入(构造函数注入)将适当的EF上下文(包装在存储库中)传递给控制器/类/等等
通过这种方式,我现在可以将我的项目从需要担心EF项目中分离出来。这进一步有助于我们的源代码管理和连续部署。那么我是否不签入NuGet配置文件?或者确保它不会被合并?如果文件被合并,那么它将再次中断引用。我将仔细查看您提供的链接,它看起来很有希望,但在快速浏览之后,我不知道如何绕过依赖关系被分支的问题。我的分支项目位于同一深度,因此我可以轻松引用同一个DLL,但无法轻松引用不同文件夹中的DLL。它们位于相同的深度,但位于不同的文件夹中:Dev/Main/qa,如果我可以设置某种类型的变量来提取分支名称的话。我可以将其插入到相对路径中,这样可以修复它。@Cory您需要签入NuGet配置文件,合并/分支时应小心。你可以参考这个类似的方法:这是目前最好的方法,不幸的是没有完美的解决方案。毕竟你也做了不少研究。此外,我们通常不分支程序集文件夹。如果我的回答对你有帮助或者给了你一个正确的方向,你能帮助社区中的其他人吗。我想先给点时间来回答其他问题。我看过那篇文章,可能不得不求助于类似的东西。谢谢你的帮助。实际上我找到了另一种方法来完成我想要的。谢谢你的建议,但我发现的方法似乎在最少的配置下工作得最好。
<ItemGroup Condition="'$(Configuration)' != 'Dev'">
<Reference Include="MyReference, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>C:\Example\Prod\MyReference.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Dev'">
<Reference Include="MyReference, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>C:\Example\Dev\MyReference.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>