Skip to content

Commit 29b011a

Browse files
garyransonmrbean-bremen
authored andcommitted
Updates to support multiple dotnet targets
- support v3.5, v4.0, v4.5.2, v4.7.2 and dotnetcore2.2 - added support for Appveyor build - added explict FrameworkPathOverride to projects - added <IsTextProject> to csproj file - remove net35 from unittests. Updated licence method.
1 parent f93fe12 commit 29b011a

15 files changed

+316
-568
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ Tests/**/*.suo
1717
Source/TestResults/
1818
Source/.vs
1919
/Source/Svg.sln.DotSettings.user
20+
/Source/Svg.XML

Source/DataTypes/SvgUnitConverter.cs

-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.ComponentModel;
4-
using System.Diagnostics;
53
using System.Globalization;
6-
using System.Text;
7-
using System.Text.RegularExpressions;
8-
using System.Web.UI.WebControls;
94

105
namespace Svg
116
{

Source/Document Structure/SvgGroup.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ protected override void Render(ISvgRenderer renderer)
5656
}
5757

5858
/// <summary>
59-
/// Gets the <see cref="GraphicsPath"/> for this element.
59+
/// Gets the <see cref="System.Drawing.Drawing2D.GraphicsPath"/> for this element.
6060
/// </summary>
6161
/// <value></value>
6262
public override GraphicsPath Path(ISvgRenderer renderer)

Source/Painting/EnumConverters.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public EnumBaseConverter() { }
8484

8585
/// <summary>Creates a new instance.</summary>
8686
/// <param name="defaultValue">Specified the default value of the enum.</param>
87-
/// <param name="caseHandling">Specified the case.</param>
87+
/// <param name="caseHandling">Defines if the value shall be converted to lower camel case or lower case</param>
8888
public EnumBaseConverter(T defaultValue, CaseHandling caseHandling = CaseHandling.CamelCase)
8989
{
9090
this.DefaultValue = defaultValue;

Source/Properties/AssemblyInfo.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
#if NETFULL
23
using System.Reflection;
34
using System.Runtime.CompilerServices;
45
using System.Runtime.InteropServices;
@@ -34,7 +35,7 @@
3435
// by using the '*' as shown below:
3536
[assembly: AssemblyVersion("2.4.3.*")]
3637
//[assembly: AssemblyFileVersion("1.0.1.*")]
37-
38+
#endif
3839
[assembly: CLSCompliant(true)]
3940

4041
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Svg.UnitTests,PublicKey=" +

Source/Svg.csproj

+126-374
Large diffs are not rendered by default.

Source/Svg.sln

+7-46
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.25123.0
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28307.168
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Svg", "Svg.csproj", "{886A98C5-37C0-4E8B-885E-30C1D2F98B47}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Svg", "Svg.csproj", "{886A98C5-37C0-4E8B-885E-30C1D2F98B47}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SVGViewer", "..\Samples\SVGViewer\SVGViewer.csproj", "{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}"
9-
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Svg.UnitTests", "..\Tests\Svg.UnitTests\Svg.UnitTests.csproj", "{E702EB7D-D01D-438A-BADD-E72D4E49109F}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Svg.UnitTests", "..\Tests\Svg.UnitTests\Svg.UnitTests.csproj", "{E702EB7D-D01D-438A-BADD-E72D4E49109F}"
119
EndProject
1210
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A417AF1E-BEDB-4715-B4FD-D795579217F9}"
1311
ProjectSection(SolutionItems) = preProject
@@ -16,10 +14,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1614
TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
1715
EndProjectSection
1816
EndProject
19-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvgW3CTestRunner", "..\Tests\SvgW3CTestRunner\SvgW3CTestRunner.csproj", "{8ED74C39-6CFF-421E-952A-30F9E6957108}"
20-
EndProject
21-
Project("{FF286327-C783-4F7A-AB73-9BCBAD0D4460}") = "Svg.Package", "SvgNuget\Svg.Package.nuproj", "{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}"
22-
EndProject
2317
Global
2418
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2519
Debug|Any CPU = Debug|Any CPU
@@ -40,18 +34,6 @@ Global
4034
{886A98C5-37C0-4E8B-885E-30C1D2F98B47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
4135
{886A98C5-37C0-4E8B-885E-30C1D2F98B47}.Release|Mixed Platforms.Build.0 = Release|Any CPU
4236
{886A98C5-37C0-4E8B-885E-30C1D2F98B47}.Release|x86.ActiveCfg = Release|Any CPU
43-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Debug|Any CPU.ActiveCfg = Release|Any CPU
44-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Debug|Any CPU.Build.0 = Release|Any CPU
45-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
46-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Debug|Mixed Platforms.Build.0 = Debug|x86
47-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Debug|x86.ActiveCfg = Debug|x86
48-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Debug|x86.Build.0 = Debug|Any CPU
49-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
50-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Release|Any CPU.Build.0 = Release|Any CPU
51-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Release|Mixed Platforms.ActiveCfg = Release|x86
52-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Release|Mixed Platforms.Build.0 = Release|x86
53-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Release|x86.ActiveCfg = Release|Any CPU
54-
{1B8F3C8A-CCAC-474E-B09D-522FBA93DCFD}.Release|x86.Build.0 = Release|Any CPU
5537
{E702EB7D-D01D-438A-BADD-E72D4E49109F}.Debug|Any CPU.ActiveCfg = Release|Any CPU
5638
{E702EB7D-D01D-438A-BADD-E72D4E49109F}.Debug|Any CPU.Build.0 = Release|Any CPU
5739
{E702EB7D-D01D-438A-BADD-E72D4E49109F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -62,34 +44,13 @@ Global
6244
{E702EB7D-D01D-438A-BADD-E72D4E49109F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
6345
{E702EB7D-D01D-438A-BADD-E72D4E49109F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
6446
{E702EB7D-D01D-438A-BADD-E72D4E49109F}.Release|x86.ActiveCfg = Release|Any CPU
65-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Debug|Any CPU.ActiveCfg = Release|x86
66-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Debug|Any CPU.Build.0 = Release|x86
67-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
68-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Debug|Mixed Platforms.Build.0 = Debug|x86
69-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Debug|x86.ActiveCfg = Debug|x86
70-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Debug|x86.Build.0 = Debug|x86
71-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Release|Any CPU.ActiveCfg = Release|x86
72-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Release|Any CPU.Build.0 = Release|x86
73-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Release|Mixed Platforms.ActiveCfg = Release|x86
74-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Release|Mixed Platforms.Build.0 = Release|x86
75-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Release|x86.ActiveCfg = Release|x86
76-
{8ED74C39-6CFF-421E-952A-30F9E6957108}.Release|x86.Build.0 = Release|x86
77-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
78-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
79-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
80-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
81-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Debug|x86.ActiveCfg = Debug|Any CPU
82-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Debug|x86.Build.0 = Debug|Any CPU
83-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
84-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Release|Any CPU.Build.0 = Release|Any CPU
85-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
86-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
87-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Release|x86.ActiveCfg = Release|Any CPU
88-
{AEEFC0CC-6D17-439D-B8E0-53B713485E3B}.Release|x86.Build.0 = Release|Any CPU
8947
EndGlobalSection
9048
GlobalSection(SolutionProperties) = preSolution
9149
HideSolutionNode = FALSE
9250
EndGlobalSection
51+
GlobalSection(ExtensibilityGlobals) = postSolution
52+
SolutionGuid = {5096EEB3-8F41-44B5-BCF9-58743A59AB21}
53+
EndGlobalSection
9354
GlobalSection(TestCaseManagementSettings) = postSolution
9455
CategoryFile = Svg.vsmdi
9556
EndGlobalSection

Source/SvgDocument.cs

+12-8
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,10 @@ public static SvgDocument Open(string path)
230230

231231
using (var strReader = new System.IO.StringReader(svg))
232232
{
233-
var reader = new SvgTextReader(strReader, null);
234-
reader.XmlResolver = new SvgDtdResolver();
235-
reader.WhitespaceHandling = WhitespaceHandling.None;
233+
var reader = new SvgTextReader(strReader, null)
234+
{
235+
XmlResolver = new SvgDtdResolver(), WhitespaceHandling = WhitespaceHandling.None
236+
};
236237
return Open<T>(reader);
237238
}
238239
}
@@ -251,9 +252,10 @@ public static SvgDocument Open(string path)
251252
}
252253

253254
// Don't close the stream via a dispose: that is the client's job.
254-
var reader = new SvgTextReader(stream, entities);
255-
reader.XmlResolver = new SvgDtdResolver();
256-
reader.WhitespaceHandling = WhitespaceHandling.None;
255+
var reader = new SvgTextReader(stream, entities)
256+
{
257+
XmlResolver = new SvgDtdResolver(), WhitespaceHandling = WhitespaceHandling.None
258+
};
257259
return Open<T>(reader);
258260
}
259261

@@ -621,8 +623,10 @@ public override void Write(XmlTextWriter writer)
621623
public void Write(Stream stream, bool useBom = true)
622624
{
623625

624-
var xmlWriter = new XmlTextWriter(stream, useBom ? Encoding.UTF8 : new System.Text.UTF8Encoding(false));
625-
xmlWriter.Formatting = Formatting.Indented;
626+
var xmlWriter = new XmlTextWriter(stream, useBom ? Encoding.UTF8 : new System.Text.UTF8Encoding(false))
627+
{
628+
Formatting = Formatting.Indented
629+
};
626630
xmlWriter.WriteStartDocument();
627631
xmlWriter.WriteDocType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", null);
628632

Source/SvgElement.cs

+6
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,13 @@ private Dictionary<string, string> WritePropertyAttributes(XmlTextWriter writer)
652652
}
653653
}
654654

655+
#if NETFULL
655656
var value = (string)attr.Property.Converter.ConvertTo(propertyValue, typeof(string));
657+
#else
658+
// dotnetcore throws exception if input is null
659+
string value = propertyValue==null?null:(string)attr.Property.Converter.ConvertTo(propertyValue, typeof(string));
660+
#endif
661+
656662
if (propertyValue != null)
657663
{
658664
var type = propertyValue.GetType();

Source/Web/SvgHandler.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#if NETFULL
12
using System;
23
using System.Collections;
34
using System.Collections.Generic;
@@ -230,4 +231,5 @@ public WaitHandle AsyncWaitHandle
230231
}
231232
}
232233
}
233-
}
234+
}
235+
#endif

Tests/Svg.UnitTests/ImageComparisonTest.cs

+60-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
using Microsoft.VisualStudio.TestTools.UnitTesting;
22
using System;
3+
using System.Collections.Generic;
34
using System.Drawing;
45
using System.Drawing.Drawing2D;
56
using System.Drawing.Imaging;
67
using System.IO;
8+
using System.Linq;
79

810
namespace Svg.UnitTests
911
{
@@ -13,6 +15,32 @@ namespace Svg.UnitTests
1315
public class ImageComparisonTest
1416
{
1517
public TestContext TestContext { get; set; }
18+
#if NETCORE
19+
private static string _basePath = null;
20+
private static string GetSuiteTestsFolder
21+
{
22+
get
23+
{
24+
if (_basePath != null) return _basePath;
25+
var basePath = Environment.CurrentDirectory;
26+
while (!basePath.ToLower().EndsWith("svg"))
27+
{
28+
basePath = Path.GetDirectoryName(basePath);
29+
}
30+
31+
_basePath = Path.Combine(basePath, "Tests");
32+
return _basePath;
33+
}
34+
}
35+
36+
private static IEnumerable<object[]> GetData()
37+
{
38+
var basePath = GetSuiteTestsFolder;
39+
var testSuite = Path.Combine(basePath, "W3CTestSuite");
40+
var rows = File.ReadAllLines(Path.Combine(basePath, "Svg.UnitTests", "PassingTests.csv")).Skip(1);
41+
foreach (var row in rows)
42+
yield return new[] { (object)testSuite, (object) row,};
43+
}
1644

1745
/// <summary>
1846
/// Compares SVG images against reference PNG images from the W3C SVG 1.1 test suite.
@@ -21,9 +49,26 @@ public class ImageComparisonTest
2149
/// Note that with the current test there are still a lot of false positives,
2250
/// so this is not a definitive test for image equality yet.
2351
/// </summary>
52+
[TestMethod]
53+
[DynamicData(nameof(GetData), DynamicDataSourceType.Method)]
54+
// [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",@"|DataDirectory|\..\..\PassingTests.csv","PassingTests#csv", DataAccessMethod.Sequential)]
55+
//public void CompareSvgImageWithReference()
56+
public void CompareSvgImageWithReference(string basePath, string baseName)
57+
{
58+
var svgPath = Path.Combine(basePath, "svg", baseName + ".svg");
59+
var pngPath = Path.Combine(basePath, "png", baseName + ".png");
60+
var pngImage = Image.FromFile(pngPath);
61+
var svgImage = LoadSvgImage(baseName, svgPath);
62+
Assert.AreNotEqual(null, pngImage, "Failed to load " + pngPath);
63+
Assert.AreNotEqual(null, svgImage, "Failed to load " + svgPath);
64+
var difference = svgImage.PercentageDifference(pngImage);
65+
Assert.IsTrue(difference < 0.05,
66+
baseName + ": Difference is " + (difference * 100.0).ToString() + "%");
67+
}
68+
#else
2469
[TestMethod]
2570
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
26-
@"|DataDirectory|\..\..\PassingTests.csv",
71+
@"|DataDirectory|\..\..\..\PassingTests.csv",
2772
"PassingTests#csv", DataAccessMethod.Sequential)]
2873
public void CompareSvgImageWithReference()
2974
{
@@ -32,16 +77,16 @@ public void CompareSvgImageWithReference()
3277
{
3378
basePath = Path.GetDirectoryName(basePath);
3479
}
35-
basePath = Path.Combine(basePath, "Tests", "W3CTestSuite");
80+
basePath = Path.Combine(Path.Combine(basePath, "Tests"), "W3CTestSuite");
3681
var svgBasePath = Path.Combine(basePath, "svg");
3782
var baseName = TestContext.DataRow[0] as string;
3883
bool testSaveLoad = !baseName.StartsWith("#");
3984
if (!testSaveLoad)
4085
{
4186
baseName = baseName.Substring(1);
4287
}
43-
var svgPath = Path.Combine(basePath, "svg", baseName + ".svg");
44-
var pngPath = Path.Combine(basePath, "png", baseName + ".png");
88+
var svgPath = Path.Combine(Path.Combine(basePath, "svg"), baseName + ".svg");
89+
var pngPath = Path.Combine(Path.Combine(basePath, "png"), baseName + ".png");
4590
var pngImage = Image.FromFile(pngPath);
4691
var svgDoc = LoadSvgDocument(svgPath);
4792
Assert.IsNotNull(svgDoc);
@@ -50,7 +95,7 @@ public void CompareSvgImageWithReference()
5095
Assert.AreNotEqual(null, pngImage, "Failed to load " + pngPath);
5196
Assert.AreNotEqual(null, svgImage, "Failed to load " + svgPath);
5297
var difference = svgImage.PercentageDifference(pngImage);
53-
Assert.IsTrue(difference < 0.05,
98+
Assert.IsTrue(difference < 0.05,
5499
baseName + ": Difference is " + (difference * 100.0).ToString() + "%");
55100
if (!testSaveLoad)
56101
{
@@ -76,6 +121,7 @@ public void CompareSvgImageWithReference()
76121
baseName + ": Difference is " + (difference * 100.0).ToString() + "%");
77122
}
78123
}
124+
#endif
79125

80126
/// <summary>
81127
/// Enable this test to output the calculate percentage difference
@@ -85,15 +131,18 @@ public void CompareSvgImageWithReference()
85131
// [TestClass]
86132
public void RecordDiffForAllSvgImagesWithReference()
87133
{
88-
var basePath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(
89-
TestContext.TestRunDirectory)));
90-
basePath = Path.Combine(basePath, "Tests", "W3CTestSuite");
91-
var svgBasePath = Path.Combine(basePath, "svg");
134+
#if NETCORE
135+
var basePath = Path.Combine(GetSuiteTestsFolder, "W3CTestSuite");
136+
#else
137+
var basePath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(TestContext.TestRunDirectory)));
138+
basePath = Path.Combine(Path.Combine(basePath, "Tests"), "W3CTestSuite");
139+
#endif
140+
// var svgBasePath = Path.Combine(basePath, "svg");
92141
string[] lines = File.ReadAllLines(@"..\..\..\..\Tests\Svg.UnitTests\all.csv");
93142
foreach (var baseName in lines)
94143
{
95-
var svgPath = Path.Combine(basePath, "svg", baseName + ".svg");
96-
var pngPath = Path.Combine(basePath, "png", baseName + ".png");
144+
var svgPath = Path.Combine(Path.Combine(basePath, "svg"), baseName + ".svg");
145+
var pngPath = Path.Combine(Path.Combine(basePath, "png"), baseName + ".png");
97146
if (File.Exists(pngPath) && File.Exists(svgPath))
98147
{
99148
var pngImage = Image.FromFile(pngPath);

Tests/Svg.UnitTests/MultiThreadingTest.cs

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#if NET35
2+
#else
13
using Microsoft.VisualStudio.TestTools.UnitTesting;
24
using Svg.Exceptions;
35
using System;
@@ -37,3 +39,4 @@ public void LoadSVGThreading_MultiThread_YieldsNoErrorWhileInBounds()
3739
}
3840
}
3941
}
42+
#endif
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,4 @@
1-
using System.Reflection;
2-
using System.Runtime.CompilerServices;
3-
using System.Runtime.InteropServices;
1+
using System.Runtime.InteropServices;
42

5-
// General Information about an assembly is controlled through the following
6-
// set of attributes. Change these attribute values to modify the information
7-
// associated with an assembly.
8-
[assembly: AssemblyTitle("Svg.UnitTests")]
9-
[assembly: AssemblyDescription("")]
10-
[assembly: AssemblyConfiguration("")]
11-
[assembly: AssemblyCompany("")]
12-
[assembly: AssemblyProduct("Svg.UnitTests")]
13-
[assembly: AssemblyCopyright("Copyright © 2014")]
14-
[assembly: AssemblyTrademark("")]
15-
[assembly: AssemblyCulture("")]
16-
17-
// Setting ComVisible to false makes the types in this assembly not visible
18-
// to COM components. If you need to access a type in this assembly from
19-
// COM, set the ComVisible attribute to true on that type.
203
[assembly: ComVisible(false)]
21-
22-
// The following GUID is for the ID of the typelib if this project is exposed to COM
234
[assembly: Guid("6ab1d266-f201-46c0-9d14-523768eb18db")]
24-
25-
// Version information for an assembly consists of the following four values:
26-
//
27-
// Major Version
28-
// Minor Version
29-
// Build Number
30-
// Revision
31-
//
32-
// You can specify all the values or you can default the Build and Revision Numbers
33-
// by using the '*' as shown below:
34-
[assembly: AssemblyVersion("1.0.0.0")]
35-
[assembly: AssemblyFileVersion("1.0.0.0")]

0 commit comments

Comments
 (0)