Dja*_*rdt 10 iis deployment web-server web-applications visual-studio
我们最近将我们的 ASP.NET网站升级为Web 应用程序,我们对部署时突然出现的困难感到震惊。考虑到这是一项多么普遍的任务,我想知道人们使用什么插件/软件来部署快速发展的远程存储项目(即网站)?
除了在Visual Studio 中“发布”然后必须手动 FTP 已更改的文件之外,一定有更好的方法吗?尤其是因为当我们上传我们的 .DLL 时网站会宕机。
有太多繁琐的文件异常,我必须尽可能地自动化该过程,以防止意外上传。
使用我们的旧解决方案(在我们的网站上),我们使用Dispatch for ASP,它完全震撼了整个过程,只需单击一下。不幸的是,它对 DLL 来说不是很好(如前所述)。
那么你的团队是如何做到的呢?
感谢您的任何建议。
PS - 我已经读到 Visual Studio 2010 应该解决 VS2005/08 中的这些缺点,但在那之前......
我强烈推荐使用持续集成。
我们结合使用TeamCity for CI、Rake和Albacore来自动化构建。
TeamCity 将从您的源代码存储库中检出代码,然后使用 Rake 构建应用程序、执行单元测试,甚至如果您愿意,甚至可以运行您的数据库脚本。成功构建后,您可以将源代码打包到 zip 文件中或将其复制到您选择的目的地。
我们使用 Git,尽管 TeamCity 适用于所有源代码控制系统。
使用 TeamCity 和 Rake 类似于使用 CruiseControl 和 NANT,无需编辑 XML 文件。当然,如果您愿意,您可以将 TeamCity 与 NANT 结合使用。
从执行构建的 rakefile.rb 中提取的简短示例。恕我直言,比 XML 文件更容易阅读和调试。
require 'albacore'
require 'rexml/document'
require 'find'
VERSION_NO = "1.0"
OUTPUT_PATH = "output"
WEBOUTPUT_PATH = "output/web"
ADMINOUTPUT_PATH = "output/admin"
CONFIG = "Release"
WEB_PATH = "app/Company.Website.Web"
ADMIN_PATH = "app/Company.Website.Admin"
PACKAGE_PATH = "build/package"
DB_SCRIPT_PATH = "Company.Website.DB"
SOLUTION = "Company.Website.sln"
ARTIFACTS_PATH = "d:/build/artifacts/"
DEPLOY_WEB_PATH = "d:/deploy/company/website/"
DEPLOY_ADMIN_PATH = "d:/deploy/company/admin/"
task :default => ['setuptest','assemblyinfo','config','msbuild','createdb','sqlcmd','deploy']
task :setuptest do |setup|
if ENV['BuildNumber'].nil? then ENV['BuildNumber'] = "000" end
VERSION_NO = VERSION_NO + '.' + ENV['BuildNumber']
puts 'Version Number : ' + VERSION_NO
ZIPFILE_WEB = 'Company.Website.Web.' + VERSION_NO
ZIPFILE_ADMIN = 'Company.Website.Admin.' + VERSION_NO
DB_SERVER = "WEB2"
DB_DATABASE = "Website"
CREATEDB_SCRIPT = "app/Company.Website.DB/00CreateDatabaseTEST.sql"
end
assemblyinfotask do |asm|
asm.version = VERSION_NO
asm.company_name = "Company Name"
asm.copyright = "Copyright 2010"
asm.output_file = "CommonAssemblyInfo.cs"
end
task :config do
FileUtils.cp 'NHibernate.test.config', 'NHibernate.config'
end
msbuildtask do |msb|
msb.properties = { :configuration => :Debug }
msb.targets [:Clean, :Build]
msb.solution = "Company.Website.sln"
end
sqlcmdtask :createdb do |sql|
puts "executing sql scripts..."
sql.log_level = :verbose
sql.path_to_command = "sqlcmd.exe"
sql.server = DB_SERVER
sql.database = "master"
sql.scripts << CREATEDB_SCRIPT
end
sqlcmdtask do |sql|
puts "executing sql scripts..."
sql.log_level = :verbose
sql.path_to_command = "sqlcmd.exe"
sql.server = DB_SERVER
sql.database = DB_DATABASE
sql.scripts << "app/Company.Website.DB/01CreateTables.sql"
sql.scripts << "app/Company.Website.DB/02InsertReferenceData.sql"
end
task :deployprep do
FileUtils.remove_dir 'app/Company.Website.Web/obj'
FileUtils.remove_dir 'app/Company.Website.Admin/obj'
end
ziptask :zipweb do |zip|
puts "creating zip package in " + ZIPFILE_WEB
zip.directories_to_zip = ["app/Company.Website.Web"]
zip.output_file = ZIPFILE_WEB + '.zip'
zip.output_path = File.dirname(__FILE__)
end
ziptask :zipadmin do |zip|
puts "creating zip package in " + ZIPFILE_ADMIN
zip.directories_to_zip = ["app/Company.Website.Admin"]
zip.output_file = ZIPFILE_ADMIN + '.zip'
zip.output_path = File.dirname(__FILE__)
end
Run Code Online (Sandbox Code Playgroud)
Albacore 是专门为部署 .NET 应用程序而构建的 Rake 任务套件。