From e2f1ab21c9e1e54d8fcea791615374dc4ecae18c Mon Sep 17 00:00:00 2001 From: Jan Pluskal Date: Tue, 12 Nov 2019 18:53:24 +0100 Subject: [PATCH 1/3] Migrate to new csproj VS2017+ AssemblyInfo is no longer required, info moved to csproj. Csproj do not require listing files so template is also removed. --- builder/csharp_builder.rb | 18 ++++-- builder/spec/csharp/csharp_builder_spec.rb | 2 +- spec/csharp/.gitignore | 2 +- .../Properties/AssemblyInfo.cs | 27 --------- .../kaitai_struct_csharp_tests.csproj | 37 ++++++++++++ .../kaitai_struct_csharp_tests.csproj.in | 56 ------------------- .../packages.config | 11 ---- 7 files changed, 51 insertions(+), 102 deletions(-) delete mode 100644 spec/csharp/kaitai_struct_csharp_tests/Properties/AssemblyInfo.cs create mode 100644 spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj delete mode 100644 spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in delete mode 100644 spec/csharp/kaitai_struct_csharp_tests/packages.config diff --git a/builder/csharp_builder.rb b/builder/csharp_builder.rb index 165cccda1..c10457c38 100644 --- a/builder/csharp_builder.rb +++ b/builder/csharp_builder.rb @@ -12,7 +12,6 @@ def initialize @packages_dir = 'spec/csharp/packages' @compiled_dir = 'compiled/csharp' @project_file = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj" - @project_template = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj.in" @test_out_dir = "#{@config['TEST_OUT_DIR']}/csharp" @@ -35,13 +34,15 @@ def detect_tools @msbuild_args << '/logger:C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll' end + # New csproj format requires NuGet restore before build + @msbuild_args << '/restore' + # If mono is available, use it @is_mono = system("mono --version") ? true : false end def list_mandatory_files convert_slashes([ - 'Properties/AssemblyInfo.cs', 'CommonSpec.cs', ]) end @@ -53,13 +54,18 @@ def list_disposable_files end def create_project(mand_files, disp_files) - tmpl = File.read(@project_template) - files_xml = (mand_files + disp_files).map { |x| " " }.join("\n") - project = tmpl.gsub(/%%%FILES%%%/, files_xml) - File.write(@project_file, project) + Dir[@compiled_dir + "/**/*.{cs}"].each do |original_parser_filepath| + new_parser_filepath = original_parser_filepath.gsub(@compiled_dir, @spec_dir + "/parsers/") + copy_with_path(original_parser_filepath, new_parser_filepath); + end @project_file end + def copy_with_path(src, dst) + FileUtils.mkdir_p(File.dirname(dst)) + FileUtils.cp(src, dst) + end + def build_project(log_file) cli = [@msbuild] + @msbuild_args + ["#{@spec_dir}/kaitai_struct_csharp_tests.csproj"] run_and_tee({}, cli, log_file).exitstatus diff --git a/builder/spec/csharp/csharp_builder_spec.rb b/builder/spec/csharp/csharp_builder_spec.rb index 083c77511..7a7bfc425 100644 --- a/builder/spec/csharp/csharp_builder_spec.rb +++ b/builder/spec/csharp/csharp_builder_spec.rb @@ -15,7 +15,7 @@ describe '#list_mandatory_files' do it 'shows no mandatory files' do - expect(@builder.list_mandatory_files.to_a.sort).to eq ["CommonSpec.cs", "Properties\\AssemblyInfo.cs"] + expect(@builder.list_mandatory_files.to_a.sort).to eq ["CommonSpec.cs"] end end diff --git a/spec/csharp/.gitignore b/spec/csharp/.gitignore index 72baf170f..443d016da 100644 --- a/spec/csharp/.gitignore +++ b/spec/csharp/.gitignore @@ -253,4 +253,4 @@ paket-files/ *.sln.iml # Kaitai Struct test builder specific: this file is generated in `run-csharp` -kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj +kaitai_struct_csharp_tests/parsers/* diff --git a/spec/csharp/kaitai_struct_csharp_tests/Properties/AssemblyInfo.cs b/spec/csharp/kaitai_struct_csharp_tests/Properties/AssemblyInfo.cs deleted file mode 100644 index efea3a1f5..000000000 --- a/spec/csharp/kaitai_struct_csharp_tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("kaitai_struct_csharp_tests")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("Kaitai Project")] -[assembly: AssemblyTrademark ("")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj new file mode 100644 index 000000000..d3d95739b --- /dev/null +++ b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj @@ -0,0 +1,37 @@ + + + + net4.6 + 1701;1702 + + + + + Kaitai Project + Kaitai Struct Tests + Copyright © Kaitai Project 2016-2018 + Kaitai.Struct.Tests + Kaitai + + 0.7.0.0 + 0.7.0.0 + 0.7.0.0 + + + + + + + + + + + + + + + + + + + diff --git a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in deleted file mode 100644 index 2874ee638..000000000 --- a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in +++ /dev/null @@ -1,56 +0,0 @@ - - - - Debug - AnyCPU - {6EAD43BD-81C8-44BF-BF8D-A8E90B8A9809} - Library - kscsharptesting - kaitai_struct_csharp_tests - v4.5 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - - - full - true - bin\Release - prompt - 4 - false - - - - - ..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll - - - -%%%FILES%%% - - - - Always - src\%(Filename)%(Extension) - - - - - - - - - - {8339A750-C407-4CE8-8E31-51CB2EFD3A4B} - kaitai_struct_runtime_csharp - - - diff --git a/spec/csharp/kaitai_struct_csharp_tests/packages.config b/spec/csharp/kaitai_struct_csharp_tests/packages.config deleted file mode 100644 index 0be862520..000000000 --- a/spec/csharp/kaitai_struct_csharp_tests/packages.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file From 34452d5f60eb4a9f0780b974ea9a5876a04c15f9 Mon Sep 17 00:00:00 2001 From: Jan Pluskal Date: Wed, 13 Nov 2019 16:07:44 +0100 Subject: [PATCH 2/3] Link parsers into the solution insted of copying them. --- builder/csharp_builder.rb | 11 +++++------ .../kaitai_struct_csharp_tests.csproj | 4 ++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/builder/csharp_builder.rb b/builder/csharp_builder.rb index c10457c38..2a6bee4b4 100644 --- a/builder/csharp_builder.rb +++ b/builder/csharp_builder.rb @@ -11,8 +11,7 @@ def initialize @spec_dir = 'spec/csharp/kaitai_struct_csharp_tests' @packages_dir = 'spec/csharp/packages' @compiled_dir = 'compiled/csharp' - @project_file = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj" - + @project_file = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj" @test_out_dir = "#{@config['TEST_OUT_DIR']}/csharp" detect_tools @@ -54,10 +53,10 @@ def list_disposable_files end def create_project(mand_files, disp_files) - Dir[@compiled_dir + "/**/*.{cs}"].each do |original_parser_filepath| - new_parser_filepath = original_parser_filepath.gsub(@compiled_dir, @spec_dir + "/parsers/") - copy_with_path(original_parser_filepath, new_parser_filepath); - end + tmpl = File.read(@project_file) + files_xml = (disp_files).map { |x| " " }.join("\n") + project = tmpl.gsub(/ /, files_xml) + File.write(@project_file, project) @project_file end diff --git a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj index d3d95739b..4f213acc3 100644 --- a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj +++ b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj @@ -19,6 +19,10 @@ + + + + From 6d47ecd148b3929a4773f2e10332f572a92aea25 Mon Sep 17 00:00:00 2001 From: Jan Pluskal Date: Thu, 21 Nov 2019 08:03:53 +0100 Subject: [PATCH 3/3] Revert to templated csproj --- builder/csharp_builder.rb | 15 ++++++--------- spec/csharp/.gitignore | 2 +- ...sproj => kaitai_struct_csharp_tests.csproj.in} | 4 +++- 3 files changed, 10 insertions(+), 11 deletions(-) rename spec/csharp/kaitai_struct_csharp_tests/{kaitai_struct_csharp_tests.csproj => kaitai_struct_csharp_tests.csproj.in} (94%) diff --git a/builder/csharp_builder.rb b/builder/csharp_builder.rb index 2a6bee4b4..fb73e728c 100644 --- a/builder/csharp_builder.rb +++ b/builder/csharp_builder.rb @@ -11,7 +11,9 @@ def initialize @spec_dir = 'spec/csharp/kaitai_struct_csharp_tests' @packages_dir = 'spec/csharp/packages' @compiled_dir = 'compiled/csharp' - @project_file = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj" + @project_file = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj" + @project_template = "#{@spec_dir}/kaitai_struct_csharp_tests.csproj.in" + @test_out_dir = "#{@config['TEST_OUT_DIR']}/csharp" detect_tools @@ -53,18 +55,13 @@ def list_disposable_files end def create_project(mand_files, disp_files) - tmpl = File.read(@project_file) - files_xml = (disp_files).map { |x| " " }.join("\n") - project = tmpl.gsub(/ /, files_xml) + tmpl = File.read(@project_template) + files_xml = (mand_files + disp_files).map { |x| " " }.join("\n") + project = tmpl.gsub(/%%%FILES%%%/, files_xml) File.write(@project_file, project) @project_file end - def copy_with_path(src, dst) - FileUtils.mkdir_p(File.dirname(dst)) - FileUtils.cp(src, dst) - end - def build_project(log_file) cli = [@msbuild] + @msbuild_args + ["#{@spec_dir}/kaitai_struct_csharp_tests.csproj"] run_and_tee({}, cli, log_file).exitstatus diff --git a/spec/csharp/.gitignore b/spec/csharp/.gitignore index 443d016da..72baf170f 100644 --- a/spec/csharp/.gitignore +++ b/spec/csharp/.gitignore @@ -253,4 +253,4 @@ paket-files/ *.sln.iml # Kaitai Struct test builder specific: this file is generated in `run-csharp` -kaitai_struct_csharp_tests/parsers/* +kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj diff --git a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in similarity index 94% rename from spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj rename to spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in index 4f213acc3..7e7acde30 100644 --- a/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj +++ b/spec/csharp/kaitai_struct_csharp_tests/kaitai_struct_csharp_tests.csproj.in @@ -17,10 +17,12 @@ 0.7.0.0 0.7.0.0 + false + - +%%%FILES%%%