目前,我们在整个公司的内部网中有很多各种网站。大多数都在防火墙内,需要Active Directory帐户才能访问。最近,我们的一个问题是网站数量的增加以及存储我们的数据库访问类,公共辅助函数,序列化方法等的公共代码库的增加。目标是使用该框架整个公司的所有网站。
目前,我们已经对内部数据输入应用程序进行了一致的升级。它是最新的。但问题是维护所有其他网站。是否有最佳实践或方法可以在每个网站上找到版本并进行相应升级?我可以有一个集中的地方,我保持这些DLL和网站引用它们?什么是最好的方法来找出这些网站上的版本,而无需浏览每个网站,查找版本,并在每次更改后升级?
请记住,我们运行最新的TFS并且是.NET开发团队。
答案 0 :(得分:2)
在我的工作中,我们有类似的设置,许多使用公共库的内部应用程序,而且我花了一年的时间来整理这一切。
首先要注意的是,您提到的任何内容都与TFS无关,但实际上是您的应用程序及其组件的打包和部署方式的症状。
以下是一些可以帮助您入门的建议:
这是你需要做的第一件事。如果必须,可以在TFS中使用构建工具,或者对TeamCity进行投资(这很棒)。评估一切。找到你喜欢的东西,其他人都可以忍受。你需要找到自己喜欢的东西的原因是因为你最终会对它负责。
设置自动构建的原因非常重要,因为这是解决其余问题的起点。
现在,构建服务器应该构建每个可部署工件。不再需要手动部署。不再从工作站部署。没有更多的视觉工作室发布功能。很难摆脱这种情况,但这是值得的。
如果你有很多网络项目,那么可以选择使用web部署,使用msbuild / powershell可以轻松实现自动化,也可以尝试使用octopus deploy来尝试。
到目前为止,您的公共代码应该有自己的自动构建,但是如何自动部署公共组件?将其打包成nuget并将其放在共享上以供消费或将其托管在nuget服务器中(TeamCity内置一个)。一个好的构建服务器可以为您自动更新您的nuget包(如果您总是需要使用最新版本),并且您可以通过检查packages.config
来检查您引用的版本。
我知道这很重要,但它本质上是向持续交付的基础(http://continuousdelivery.com/)。
请注意,正确使用此权限需要花费很长时间,但这个过程是渐进式的,您可以随着时间的推移进行改进。但是,等待的时间越长,它就越难。不要觉得你需要同时升级所有项目,你不需要。只是导致最痛苦的那些。
我希望这会有所帮助。
答案 1 :(得分:0)
我只想走出针对您的问题的特定解决方案的空间,并解决您必须整合工作量的潜在愿望。 请注意,任何修补/升级方案都会产生必须解决的成本 - 没有任何神奇药丸。 特别是,您想要实现的目标通常会产生构建/部署开销(如jonnii概述)或运行时开销(在验证新版本以确保一切按预期工作)。
在您的情况下,因为您已经构建了产品,我希望您将进入构建/部署路径。
请记住,即使使用二进制等价(一切都编译,并且单元测试通过),仍然存在升级后应用程序在某种程度上表现不同的风险,因此您将无法避免至少一些基本测试您的所有应用程序(GAC方法特别容易受到此风险的影响)。
你可能会更容易接受,因为你已经构建了一个新版本的二进制文件,并不意味着它应该推广到所有的web应用程序,即使已功能正常(如果没有破坏......)。
如果这是可以接受的,那么只会在测试实际需要被触摸的应用程序时产生资源费用,从而减少工作量。