physique 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/FLUENT_MIGRATOR.md +301 -0
  3. data/Gemfile.lock +2 -1
  4. data/README.md +338 -15
  5. data/RUBY_SETUP.md +40 -0
  6. data/lib/physique/{project.rb → project_path_resolver.rb} +15 -3
  7. data/lib/physique/task_builders/build.rb +12 -5
  8. data/lib/physique/task_builders/default.rb +11 -0
  9. data/lib/physique/task_builders/fluent_migrator.rb +42 -19
  10. data/lib/physique/task_builders/octopus.rb +5 -5
  11. data/lib/physique/tool_locator.rb +8 -0
  12. data/lib/physique/version.rb +1 -1
  13. data/physique.gemspec +1 -0
  14. data/spec/fluent_migrator_config_spec.rb +1 -3
  15. data/spec/project_spec.rb +25 -8
  16. data/spec/task_builders/build_spec.rb +2 -2
  17. data/spec/task_builders/fluent_migrator_spec.rb +48 -0
  18. data/spec/test_data/solutions/fluent-migrator/.semver +6 -0
  19. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/Basic.Migrations.csproj +64 -0
  20. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/Properties/AssemblyInfo.cs +36 -0
  21. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/TestMigration.cs +19 -0
  22. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/_Scripts/create.sql +2 -0
  23. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/_Scripts/drop.sql +5 -0
  24. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/_Scripts/seed.sql +2 -0
  25. data/spec/test_data/solutions/fluent-migrator/Basic.Migrations/packages.config +4 -0
  26. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/Basic.Specs.csproj +60 -0
  27. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/Class1.cs +12 -0
  28. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/DebuggerShim.cs +42 -0
  29. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/Properties/AssemblyInfo.cs +36 -0
  30. data/spec/test_data/solutions/fluent-migrator/Basic.Specs/packages.config +4 -0
  31. data/spec/test_data/solutions/fluent-migrator/Basic.sln +39 -0
  32. data/spec/test_data/solutions/fluent-migrator/Basic/Basic.csproj +56 -0
  33. data/spec/test_data/solutions/fluent-migrator/Basic/Class1.cs +12 -0
  34. data/spec/test_data/solutions/fluent-migrator/Basic/Properties/AssemblyInfo.cs +36 -0
  35. data/spec/test_data/solutions/fluent-migrator/Basic/packages.config +3 -0
  36. data/spec/test_data/solutions/fluent-migrator/Rakefile.rb +20 -0
  37. data/spec/test_data/solutions/multiple-fluent-migrator/.semver +6 -0
  38. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations1/Basic.Migrations1.csproj +53 -0
  39. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations1/Class1.cs +12 -0
  40. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations1/Properties/AssemblyInfo.cs +36 -0
  41. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations2/Basic.Migrations2.csproj +53 -0
  42. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations2/Class1.cs +12 -0
  43. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Migrations2/Properties/AssemblyInfo.cs +36 -0
  44. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/Basic.Specs.csproj +60 -0
  45. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/Class1.cs +12 -0
  46. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/DebuggerShim.cs +42 -0
  47. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/Properties/AssemblyInfo.cs +36 -0
  48. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.Specs/packages.config +4 -0
  49. data/spec/test_data/solutions/multiple-fluent-migrator/Basic.sln +45 -0
  50. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/Basic.csproj +56 -0
  51. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/Class1.cs +12 -0
  52. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/Properties/AssemblyInfo.cs +36 -0
  53. data/spec/test_data/solutions/multiple-fluent-migrator/Basic/packages.config +3 -0
  54. data/spec/test_data/solutions/multiple-fluent-migrator/Rakefile.rb +28 -0
  55. metadata +95 -3
@@ -0,0 +1,40 @@
1
+ # Installing Ruby on Windows
2
+
3
+ * The [Chocolatey Package Manager](http://chocolatey.org/) makes installing Ruby a breeze. Think of it as NuGet for your machine. To install it, follow the instructions on [their website](http://chocolatey.org/).
4
+ * Certain Chocolatey packages might not work with older versions of Powershell so update it to the latest version.
5
+
6
+ ```
7
+ $ choco install powershell
8
+ ```
9
+
10
+ * Install Ruby.
11
+
12
+ ```
13
+ $ choco install ruby
14
+ ```
15
+
16
+ * Restart your shell to refresh the environment variables.
17
+ * Install Ruby DevKit.
18
+
19
+ ```
20
+ $ choco install ruby2.devkit
21
+ ```
22
+
23
+ * Check that ruby is installed by running the following. Note that your version may be slightly different:
24
+
25
+ ```
26
+ $ ruby --version
27
+ ruby 2.1.5p273 (2014-11-13 revision 48405) [x64-mingw32]
28
+ ```
29
+
30
+ ## Troubleshooting
31
+
32
+ When installing Ruby DevKit, it should automatically register itself with the
33
+ installed ruby version. However, you may need to configure Ruby DevKit manually
34
+ by running the following.
35
+
36
+ ```
37
+ $ cd \tools\DevKit2
38
+ $ echo "- C:/tools/ruby215" >> config.yml
39
+ $ ruby dk.rb install --force
40
+ ```
@@ -1,12 +1,24 @@
1
1
  require 'albacore/project'
2
2
 
3
3
  module Physique
4
- module Project
4
+ module ProjectPathResolver
5
5
  extend self
6
6
 
7
- def get_path(name, ext = 'cs')
7
+ DEFAULT_PROJECT_FOLDER = 'src'
8
+
9
+ @@project_folder = DEFAULT_PROJECT_FOLDER
10
+
11
+ def project_dir
12
+ @@project_folder
13
+ end
14
+
15
+ def project_dir=(val)
16
+ @@project_folder = val
17
+ end
18
+
19
+ def resolve(name, ext = 'cs')
8
20
  return name if is_full_path name
9
- "src/#{name}/#{name}.#{ext}proj"
21
+ "#{@@project_folder}/#{name}/#{name}.#{ext}proj"
10
22
  end
11
23
 
12
24
  private
@@ -1,10 +1,16 @@
1
1
  module Physique
2
2
  class CompileConfig
3
- attr_writer :configuration, # Build configuration (Release, Debug, etc.)
4
- :logging # MSBuild Logging level (normal, verbose, etc.)
3
+ attr_writer :default_targets, # Default build targets for compile task
4
+ :configuration, # Build configuration (Release, Debug, etc.)
5
+ :logging # MSBuild Logging level (normal, verbose, etc.)
5
6
 
6
7
  def initialize
7
- @targets = []
8
+ @default_targets = %w(Clean Rebuild)
9
+ @targets = %w(Clean Build Rebuild)
10
+ end
11
+
12
+ def clear_targets
13
+ @targets.clear
8
14
  end
9
15
 
10
16
  def add_target(val)
@@ -12,9 +18,10 @@ module Physique
12
18
  end
13
19
 
14
20
  def opts
15
- @targets = %w(Clean Build Rebuild) if @targets.blank?
21
+ raise ArgumentError, 'You must specify the default targets' if @default_targets.blank?
16
22
 
17
23
  Map.new({
24
+ default_targets: @default_targets,
18
25
  configuration: @configuration,
19
26
  logging: @logging,
20
27
  targets: @targets
@@ -42,7 +49,7 @@ module Physique
42
49
  block = lambda &method(:configure_build)
43
50
 
44
51
  desc 'Builds the solution'
45
- build :compile => [ :restore ], &block.curry.(%w(Clean Rebuild))
52
+ build :compile => [ :restore ], &block.curry.(solution.compile.default_targets)
46
53
 
47
54
  namespace :compile do
48
55
  solution.compile.targets.each do |t|
@@ -1,5 +1,16 @@
1
1
  module Physique
2
2
  class DefaultTasksBuilder < TasksBuilder
3
+
4
+ def build_phases
5
+ task :version
6
+ task :restore => [ :version ]
7
+ task :compile => [ :restore ]
8
+ task :test => [ :compile ]
9
+ task :package => [ :test ]
10
+ task :publish => [ :package ]
11
+ task :default => [ :test ]
12
+ end
13
+
3
14
  def build_tasks
4
15
  task :default => [ :test ]
5
16
  end
@@ -1,5 +1,5 @@
1
1
  require 'active_support/core_ext/object/blank'
2
- require 'physique/project'
2
+ require 'physique/project_path_resolver'
3
3
 
4
4
  module Physique
5
5
  class FluentMigratorConfig
@@ -25,17 +25,14 @@ module Physique
25
25
  validate_config
26
26
 
27
27
  Map.new({
28
+ lang: @lang,
28
29
  instance: @instance,
29
30
  name: @name,
30
- project: @project,
31
- project_file: Physique::Project.get_path(@project, @lang),
32
- lang: @lang,
33
- task_alias: (@task_alias || @name)
34
- }).apply(
35
- lang: :cs,
36
- project_dir: "src/#{@project}",
37
- scripts_dir: "src/#{@project}/#{@scripts_dir}"
38
- )
31
+ scripts_dir: @scripts_dir,
32
+ dialect: @dialect,
33
+ project_file: Physique::ProjectPathResolver.resolve(@project, @lang),
34
+ task_alias: (@task_alias || @name),
35
+ })
39
36
  end
40
37
 
41
38
  private
@@ -55,6 +52,7 @@ module Physique
55
52
  return if dbs.blank?
56
53
 
57
54
  dbs.each do |db|
55
+ expand_project_config db
58
56
  task_namespace = db_task_name(db)
59
57
 
60
58
  namespace :db do
@@ -86,6 +84,16 @@ module Physique
86
84
 
87
85
  private
88
86
 
87
+ def expand_project_config(db)
88
+ project = Albacore::Project.new(db.project_file)
89
+ db[:project_dir] = project.proj_path_base
90
+ db[:scripts_dir] = "#{project.proj_path_base}/#{db.scripts_dir}"
91
+
92
+ build_conf = solution.compile.configuration
93
+ db[:output_path] = project.output_path build_conf
94
+ db[:output_dll] = File.expand_path("#{db.project_dir}/#{project.output_dll(build_conf)}")
95
+ end
96
+
89
97
  def add_script_tasks(db, defaults)
90
98
  FileList["#{db.scripts_dir}/*.sql"].each do |f|
91
99
  task_name = File.basename(f, '.*')
@@ -152,7 +160,7 @@ module Physique
152
160
  config.instance = db.instance
153
161
  config.database = db.name
154
162
  config.task = task
155
- config.dll = migration_dll db
163
+ config.dll = db.output_dll
156
164
  config.exe = locate_tool(tool_in_output_folder(db) || tool_in_nuget_package)
157
165
  config.output_to_file
158
166
  end
@@ -167,12 +175,8 @@ module Physique
167
175
  task :rebuild => [ :drop, :setup ]
168
176
  end
169
177
 
170
- def migration_dll(db)
171
- "#{db.project_dir}/bin/#{solution.compile.configuration}/#{db.project}.dll"
172
- end
173
-
174
178
  def tool_in_output_folder(db)
175
- existing_path "#{db.project_dir}/bin/#{solution.compile.configuration}/Migrate.exe"
179
+ existing_path "#{db.output_path}/Migrate.exe"
176
180
  end
177
181
 
178
182
  def tool_in_nuget_package
@@ -249,11 +253,11 @@ TEMPLATE
249
253
 
250
254
  def alias_default_tasks
251
255
  Rake.application.tasks
252
- .select {|t| t.name.starts_with?('db') && GLOBAL_TASKS.has_key?(db_command(t))}
256
+ .select {|t| should_alias_db_task?(t)}
253
257
  .group_by {|t| db_command(t) }
254
258
  .each do |command,tasks|
255
- desc GLOBAL_TASKS[command]
256
- task "db:#{command}" => tasks.map {|t| t.name }
259
+ desc global_task_description(command,tasks)
260
+ task "db:#{command}", tasks[0].arg_names => tasks.map {|t| t.name }
257
261
  end
258
262
  end
259
263
 
@@ -261,6 +265,25 @@ TEMPLATE
261
265
  task.name.split(':').last.to_sym
262
266
  end
263
267
 
268
+ def should_alias_db_task?(task)
269
+ task.name.starts_with?('db') &&
270
+ (only_one_db_configured? ||
271
+ GLOBAL_TASKS.has_key?(db_command(task)))
272
+ end
273
+
274
+ def global_task_description(command, tasks)
275
+ return GLOBAL_TASKS[command] unless only_one_db_configured?
276
+
277
+ # Blank out the comment to hide the task in the list by default
278
+ description = tasks[0].comment
279
+ tasks[0].clear_comments
280
+ description
281
+ end
282
+
283
+ def only_one_db_configured?
284
+ solution.fluent_migrator_dbs.length == 1
285
+ end
286
+
264
287
  GLOBAL_TASKS = {
265
288
  create: 'Create all databases',
266
289
  drop: 'Drop all databases',
@@ -53,7 +53,7 @@ module Physique
53
53
  raise ArgumentError, 'You must specify the :type of project to deploy' if @type.blank?
54
54
  raise ArgumentError, "Project :type #{@type} is not supported." unless supported_types.include? @type
55
55
 
56
- project_file_path = Physique::Project.get_path(@project, @lang)
56
+ project_file_path = Physique::ProjectPathResolver.resolve(@project, @lang)
57
57
  _, project_file = File.split project_file_path
58
58
  project_name = File.basename(project_file, '.*')
59
59
 
@@ -93,9 +93,9 @@ module Physique
93
93
 
94
94
  def add_octopus_package_tasks
95
95
  @options.apps.each do |a|
96
- namespace :package do
96
+ namespace a.name do
97
97
  desc "Package #{a.project} for Octopus deployment"
98
- octopus_pack a.name => [:versionizer, :test] do |o|
98
+ octopus_pack :package => [:versionizer, :test] do |o|
99
99
  ensure_output_location solution.nuget.build_location
100
100
 
101
101
  o.project_file = a.project_file
@@ -116,9 +116,9 @@ module Physique
116
116
  nuget = solution.nuget
117
117
 
118
118
  @options.apps.each do |a|
119
- namespace :publish do
119
+ namespace a.name do
120
120
  desc "Publish #{a.project} app to Octopus Server"
121
- task a.name => [ "package:#{a.name}" ] do
121
+ task :publish => [ "package:#{a.name}" ] do
122
122
  package_location = Albacore::Paths.normalise_slashes "#{nuget.build_location}/#{a.project}.#{a.metadata.version}.nupkg"
123
123
  sh "#{nuget.exe} push #{package_location} -ApiKey #{@options.api_key} -Source #{@options.server}"
124
124
  end
@@ -5,6 +5,14 @@ module Physique
5
5
  module ToolLocator
6
6
  include Albacore::Logging
7
7
 
8
+ @@registered_tools = {}
9
+
10
+ def register_tool(name, executable, nuget_package = nil, nuget_path = nil)
11
+ end
12
+
13
+ def lookup_tool(name, project, package_folder)
14
+ end
15
+
8
16
  # Allows you to locate a tool on disk given a file specification. For example...
9
17
  #
10
18
  # locate_tool 'C:/Program Files/Microsoft SQL Server/**/Tools/Binn/SQLCMD.EXE'
@@ -1,3 +1,3 @@
1
1
  module Physique
2
- VERSION = '0.3.4'
2
+ VERSION = '0.3.5'
3
3
  end
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'bundler'
22
22
  spec.add_development_dependency 'rspec', '2.14.1'
23
23
  spec.add_dependency 'rake', '~> 10'
24
+ spec.add_dependency 'semver2', '~> 3.4'
24
25
  spec.add_dependency 'activesupport', '~> 4.1'
25
26
  spec.add_dependency 'map', '~> 6.5'
26
27
  spec.add_dependency 'albacore', '~> 2.3'
@@ -14,9 +14,7 @@ describe Physique::FluentMigratorConfig do
14
14
 
15
15
  it 'should default to the cs programming language' do
16
16
  project_name = 'Test.Database'
17
- opts = default_config do |c|
18
- c.project = 'Test.Database'
19
- end
17
+ opts = default_config
20
18
  expect(opts.project_file).to eq("src/#{project_name}/#{project_name}.csproj")
21
19
  end
22
20
 
@@ -1,26 +1,43 @@
1
- require 'physique/project'
1
+ require 'physique/project_path_resolver'
2
2
 
3
- describe Physique::Project do
3
+ Project = Physique::ProjectPathResolver
4
+
5
+ describe Project do
4
6
  it 'should echo the path when full project file name is provided' do
5
7
  project_name = 'test.csproj'
6
- expect(get_path(project_name)).to eq(project_name)
8
+ expect(resolve(project_name)).to eq(project_name)
7
9
  end
8
10
 
9
11
  it 'should return the full path when partial project file name is provided' do
10
12
  project_name = 'TestProject.Domain'
11
- expect(get_path(project_name)).to eq("src/#{project_name}/#{project_name}.csproj")
13
+ expect(resolve(project_name)).to eq("src/#{project_name}/#{project_name}.csproj")
12
14
  end
13
15
 
14
16
  it 'should handle multiple languages' do
15
17
  project_name = 'TestProject.Domain'
16
18
  language = 'vb'
17
- expect(get_path(project_name, language)).to eq("src/#{project_name}/#{project_name}.vbproj")
19
+ expect(resolve(project_name, language)).to eq("src/#{project_name}/#{project_name}.vbproj")
18
20
 
19
21
  language = 'fs'
20
- expect(get_path(project_name, language)).to eq("src/#{project_name}/#{project_name}.fsproj")
22
+ expect(resolve(project_name, language)).to eq("src/#{project_name}/#{project_name}.fsproj")
23
+ end
24
+
25
+ describe 'when overidding the default project dir' do
26
+ before do
27
+ Physique::ProjectPathResolver.project_dir = 'projects'
28
+ end
29
+
30
+ it 'should return the full path when partial project file name is provided' do
31
+ project_name = 'TestProject.Domain'
32
+ expect(resolve(project_name)).to eq("projects/#{project_name}/#{project_name}.csproj")
33
+ end
34
+
35
+ after do
36
+ Project.project_dir = Project::DEFAULT_PROJECT_FOLDER
37
+ end
21
38
  end
22
39
 
23
- def get_path(name, ext = 'cs')
24
- ::Physique::Project.get_path(name, ext)
40
+ def resolve(name, ext = 'cs')
41
+ Project.resolve(name, ext)
25
42
  end
26
43
  end
@@ -3,10 +3,10 @@ require 'support/shared_contexts/rake'
3
3
  describe 'basic' do
4
4
  include_context 'rake'
5
5
 
6
- BUILD_TASKS = %w(versionizer compile compile:clean compile:build compile:rebuild)
6
+ let(:build_tasks) { %w(versionizer compile compile:clean compile:build compile:rebuild) }
7
7
 
8
8
  it 'should create the build tasks' do
9
- BUILD_TASKS.each do |name|
9
+ build_tasks.each do |name|
10
10
  task_names.should include(name)
11
11
  end
12
12
  end
@@ -0,0 +1,48 @@
1
+ require 'support/shared_contexts/rake'
2
+
3
+ describe 'fluent-migrator' do
4
+ include_context 'rake'
5
+
6
+ let(:db_build_tasks) { %w(create drop migrate new_migration rebuild rollback seed setup try) }
7
+
8
+ let(:db_specific_tasks) { db_build_tasks.map {|t| "db:mydatabase:#{t}" } }
9
+
10
+ let(:build_tasks) { db_build_tasks.map {|t| "db:#{t}" } }
11
+
12
+ it 'should create all of the db tasks' do
13
+ build_tasks.each do |name|
14
+ task_names.should include(name)
15
+ end
16
+ end
17
+
18
+ it 'should create all of the db specific tasks' do
19
+ db_specific_tasks.each do |name|
20
+ task_names.should include(name)
21
+ end
22
+ end
23
+
24
+ it 'should rebuild the database' do
25
+ rake['db:rebuild'].invoke
26
+ end
27
+ end
28
+
29
+ describe 'multiple-fluent-migrator' do
30
+ include_context 'rake'
31
+
32
+ let(:db_aliases) { %w(client server) }
33
+ let(:build_tasks) { %w(create drop migrate new_migration rebuild rollback seed setup try) }
34
+ let(:db_specific_tasks) { db_aliases.product(build_tasks).map {|db_alias, task| "db:#{db_alias}:#{task}"} }
35
+ let(:global_tasks) { %w(db:create db:drop db:migrate db:rebuild db:seed db:setup) }
36
+
37
+ it 'should create the global build tasks' do
38
+ global_tasks.each do |name|
39
+ task_names.should include(name)
40
+ end
41
+ end
42
+
43
+ it 'should create the db specific tasks' do
44
+ db_specific_tasks.each do |name|
45
+ task_names.should include(name)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,6 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 0
4
+ :patch: 0
5
+ :special: ''
6
+ :metadata: ''
@@ -0,0 +1,64 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4
+ <PropertyGroup>
5
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7
+ <ProjectGuid>{C83D38D4-840D-4D0A-A44D-37B31BEF32A7}</ProjectGuid>
8
+ <OutputType>Library</OutputType>
9
+ <AppDesignerFolder>Properties</AppDesignerFolder>
10
+ <RootNamespace>Basic.Migrations</RootNamespace>
11
+ <AssemblyName>Basic.Migrations</AssemblyName>
12
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
13
+ <FileAlignment>512</FileAlignment>
14
+ </PropertyGroup>
15
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
16
+ <DebugSymbols>true</DebugSymbols>
17
+ <DebugType>full</DebugType>
18
+ <Optimize>false</Optimize>
19
+ <OutputPath>bin\Debug\</OutputPath>
20
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
21
+ <ErrorReport>prompt</ErrorReport>
22
+ <WarningLevel>4</WarningLevel>
23
+ </PropertyGroup>
24
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
25
+ <DebugType>pdbonly</DebugType>
26
+ <Optimize>true</Optimize>
27
+ <OutputPath>bin\Release\</OutputPath>
28
+ <DefineConstants>TRACE</DefineConstants>
29
+ <ErrorReport>prompt</ErrorReport>
30
+ <WarningLevel>4</WarningLevel>
31
+ </PropertyGroup>
32
+ <ItemGroup>
33
+ <Reference Include="FluentMigrator">
34
+ <HintPath>..\packages\FluentMigrator.1.4.0.0\lib\40\FluentMigrator.dll</HintPath>
35
+ </Reference>
36
+ <Reference Include="System" />
37
+ <Reference Include="System.Core" />
38
+ <Reference Include="System.Xml.Linq" />
39
+ <Reference Include="System.Data.DataSetExtensions" />
40
+ <Reference Include="Microsoft.CSharp" />
41
+ <Reference Include="System.Data" />
42
+ <Reference Include="System.Xml" />
43
+ </ItemGroup>
44
+ <ItemGroup>
45
+ <Compile Include="TestMigration.cs" />
46
+ <Compile Include="Properties\AssemblyInfo.cs" />
47
+ </ItemGroup>
48
+ <ItemGroup>
49
+ <Content Include="_Scripts\seed.sql" />
50
+ <Content Include="_Scripts\drop.sql" />
51
+ <Content Include="_Scripts\create.sql" />
52
+ </ItemGroup>
53
+ <ItemGroup>
54
+ <None Include="packages.config" />
55
+ </ItemGroup>
56
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
57
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
58
+ Other similar extension points exist, see Microsoft.Common.targets.
59
+ <Target Name="BeforeBuild">
60
+ </Target>
61
+ <Target Name="AfterBuild">
62
+ </Target>
63
+ -->
64
+ </Project>