我在一个五人小组中工作。我们正在开发一个包含五个csproject的C#应用程序。
问题是,对于每个csproject,我的每个同事都有自己的想法如何引用DLL;有些想通过Project引用链接,其他想只在DLL中链接。因此,我们每个人都将拥有自己的csproject。
我希望所有人都检查他们的csproject;但鉴于csproject的每个副本都不同,实际上没有可行的机制,是吗?但如果我不要求他们检查他们的csproject,那么每次他们添加一个新文件时,我都必须手动编辑我的csproject,这非常繁琐,更不用说它超越了持续集成的目的。
有没有处理此问题的策略? 我知道最好强制执行一项标准,但还有其他选择吗?
有一个原因,csproject内容对每个人都不同;不是每个人都拥有所有五个csprojects,并不是每个人都可以拥有所有5个csprojects。总是有些人必须最终不得不引用DLL而不是项目,并且一些想要引用项目以便于调试。如果我要执行标准,正如这里的答案所示,我将不得不解决这个问题。
至于为什么我们需要拆分成多个csproject,这是因为我们想要将代码的某些部分重用于其他应用程序,因为并非每个人都可以访问源代码。它比政治更具政治性。
答案 0 :(得分:11)
您的问题不在于如何使用源代码管理来处理它。
您的问题是您(或管理层)需要让您的团队采用整个团队遵循的一套标准。
如果你让每个人都遵循他们自己的想法,并且没有团队凝聚力的基础知识,它只会以泪水结束......
答案 1 :(得分:7)
你几乎可以肯定地解决了错误的问题。如果您将.csproj文件分叉以满足自适应首选项,则会产生额外的工作并引入错误的可能性,正如您所描述的那样 - 每次Alice向AlicesX.csproj添加文件时,Bob都必须了解这一点并将相同的文件添加到BobsX.csproj。
您确实需要将此视为标准和团队动态的问题:同意如何在主源中引用DLL,并要求每个人都坚持这一点。如果“失败”的一方不喜欢以这种方式工作,当然,他们可以在他们的私人工作副本中使用他们喜欢的风格。但是你真的只想要一个主要来源,而你想要让所有人按照主要来源的方式购买。
根据你的编辑:如果你真的,真的无法与你的同事达成协议,那么我仍然建议一个主人,但写一个反对者可以使用转换项目的小实用程序对DLL引用的引用(反之亦然)。 .csproj文件只是XML,所以这很简单。如果您甚至无法就存储库格式达成一致,那么您将需要维护并行的.csproj文件,但我仍然会编写该实用程序以确保将对DllReferencingProj.csproj所做的更改复制到ProjectReferencingProj.csproj。但是我仍然说你只是做了更多的工作并为自己储存了更多的痛苦,而不是因为你有争吵并完成了它:为了团队运作,你需要找到一些解决方法争议,这和测试案例一样好。
答案 2 :(得分:4)
让每个人都成长并遵循标准的时间。如果你们都在使用相同的代码,你应该一起决定引用dll或项目是否最好然后坚持下去。一旦你们想出这个,你可以决定是缩进2或4个空格还是标签。然后决定是否将花括号放在与函数声明后相同的行或下一行。我甚至不会说匈牙利符号的变幻莫测......
答案 3 :(得分:0)
我们的配置如下:
使用此配置引用的方式并不重要,dll将从应用程序文件夹中获取并且您是金色的。
答案 4 :(得分:-2)
持续集成不应该关心.csproj文件。我猜他们是MSBUILD文件?或者其他的东西?
不要将它们用于CI。他们是垃圾。它们会产生垃圾,因为它们会使太多东西看不见。创建一个独立于它们的干净构建结构,你会感激你的。然后只在您添加内容时检入项目文件,其他人都可以更新/合并。您大多数时间不需要拥有相同甚至类似的项目文件。在我的团队中,我们甚至没有在所有工作站上运行相同版本的VS.