Update prebuild.exe to generate .csproj files for frameworkVersion

equal to "netstandard2_0", "net5_0", and "net6_0".
Add sections for PackageReference and ProjectReference to add inter-project
   connections as well as NuGet packages.
Existing generation of .csproj files for "framework4.*" remains unchanged.
Working for simple projects with *References.
This commit is contained in:
Robert Adams
2022-02-24 19:16:33 -08:00
parent 9a897683f4
commit 2e19e41b78
10 changed files with 1121 additions and 333 deletions

2
Prebuild/runprebuild.bat Normal file → Executable file
View File

@@ -123,5 +123,5 @@ echo.
if %framework%==4_5 set %vstudio%=2012
echo Calling Prebuild for target %vstudio% with framework %framework%...
Prebuild.exe /target vs%vstudio% /targetframework v%framework% /conditionals ISWIN;NET_%framework%
..\bin\Prebuild.exe /target vs%vstudio% /targetframework v%framework% /conditionals ISWIN;NET_%framework%

3
Prebuild/src/Core/Kernel.cs Normal file → Executable file
View File

@@ -82,7 +82,8 @@ namespace Prebuild.Core
private CommandLineCollection m_CommandLine;
private Log m_Log;
private CurrentDirectory m_CurrentWorkingDirectory;
private XmlSchemaCollection m_Schemas;
[Obsolete]
private XmlSchemaCollection m_Schemas;
private readonly Dictionary<string, ITarget> m_Targets = new Dictionary<string, ITarget>();
private readonly Dictionary<string, NodeEntry> m_Nodes = new Dictionary<string, NodeEntry>();

67
Prebuild/src/Core/Nodes/OptionsNode.cs Normal file → Executable file
View File

@@ -26,6 +26,7 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Xml;
using Prebuild.Core.Attributes;
@@ -314,6 +315,42 @@ namespace Prebuild.Core.Nodes
}
}
[OptionNode("OutputType")]
private string m_OutputType = "Exe";
/// <summary>
///
/// </summary>
public string OutputType
{
get
{
return m_OutputType;
}
set
{
m_OutputType = value;
}
}
[OptionNode("RootNamespace")]
private string m_RootNamespace = "";
/// <summary>
///
/// </summary>
public string RootNamespace
{
get
{
return m_RootNamespace;
}
set
{
m_RootNamespace = value;
}
}
[OptionNode("GenerateDocumentation")]
private bool m_GenerateDocumentation;
@@ -626,6 +663,16 @@ namespace Prebuild.Core.Nodes
}
}
/// <summary>
/// Return 'true' if the option symbol has had a value set
/// </summary>
/// <param name="name"></param>
/// <returns>'true' if the option value has been set</returns>
public bool IsDefined(string name)
{
return m_FieldsDefined.Contains("m_" + name);
}
/// <summary>
/// Copies to.
/// </summary>
@@ -647,6 +694,22 @@ namespace Prebuild.Core.Nodes
}
}
#endregion
}
public override string ToString()
{
StringBuilder buff = new StringBuilder();
foreach(FieldInfo f in m_OptionFields.Values)
{
if(m_FieldsDefined.Contains(f.Name))
{
buff.Append(f.Name);
buff.Append("=");
buff.Append(f.GetValue(this).ToString());
buff.Append(",");
}
}
return buff.ToString();
}
#endregion
}
}

View File

@@ -0,0 +1,100 @@
#region BSD License
/*
Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the
distribution.
* The name of the author may not be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#endregion
using System;
using System.Xml;
using Prebuild.Core.Attributes;
using Prebuild.Core.Interfaces;
using Prebuild.Core.Utilities;
namespace Prebuild.Core.Nodes
{
/// <summary>
///
/// </summary>
[DataNode("PackageReference")]
public class PackageReferenceNode : DataNode, IComparable
{
#region Fields
private string m_Name = "unknown";
private string m_Version;
#endregion
#region Properties
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get
{
return m_Name;
}
}
/// <summary>
/// Gets the version.
/// </summary>
/// <value>The version.</value>
public string Version
{
get
{
return m_Version;
}
}
#endregion
#region Public Methods
/// <summary>
/// Parses the specified node.
/// </summary>
/// <param name="node">The node.</param>
public override void Parse(XmlNode node)
{
m_Name = Helper.AttributeValue(node, "name", m_Name);
m_Version = Helper.AttributeValue(node, "version", m_Version);
}
#endregion
#region IComparable Members
public int CompareTo(object obj)
{
PackageReferenceNode that = (PackageReferenceNode)obj;
return this.m_Name.CompareTo(that.m_Name);
}
#endregion
}
}

43
Prebuild/src/Core/Nodes/ProjectNode.cs Normal file → Executable file
View File

@@ -114,7 +114,10 @@ namespace Prebuild.Core.Nodes
v4_7,
v4_7_1,
v4_7_2,
v4_8
v4_8,
netstandard2_0,
net5_0,
net6_0
}
/// <summary>
/// The Node object representing /Prebuild/Solution/Project elements
@@ -146,6 +149,8 @@ namespace Prebuild.Core.Nodes
private readonly Dictionary<string, ConfigurationNode> m_Configurations = new Dictionary<string, ConfigurationNode>();
private readonly List<ReferencePathNode> m_ReferencePaths = new List<ReferencePathNode>();
private readonly List<ProjectReferenceNode> m_ProjectReferences = new List<ProjectReferenceNode>();
private readonly List<PackageReferenceNode> m_PackageReferences = new List<PackageReferenceNode>();
private readonly List<ReferenceNode> m_References = new List<ReferenceNode>();
private readonly List<AuthorNode> m_Authors = new List<AuthorNode>();
private FilesNode m_Files;
@@ -417,6 +422,34 @@ namespace Prebuild.Core.Nodes
return tmp;
}
}
/// <summary>
/// Gets the references.
/// </summary>
/// <value>The references.</value>
public List<ProjectReferenceNode> ProjectReferences
{
get
{
List<ProjectReferenceNode> tmp = new List<ProjectReferenceNode>(m_ProjectReferences);
tmp.Sort();
return tmp;
}
}
/// <summary>
/// Gets the package references.
/// </summary>
/// <value>The references.</value>
public List<PackageReferenceNode> PackageReferences
{
get
{
List<PackageReferenceNode> tmp = new List<PackageReferenceNode>(m_PackageReferences);
tmp.Sort();
return tmp;
}
}
/// <summary>
/// Gets the Authors list.
@@ -591,6 +624,14 @@ namespace Prebuild.Core.Nodes
else if(dataNode is ReferenceNode)
{
m_References.Add((ReferenceNode)dataNode);
}
else if(dataNode is PackageReferenceNode)
{
m_PackageReferences.Add((PackageReferenceNode)dataNode);
}
else if(dataNode is ProjectReferenceNode)
{
m_ProjectReferences.Add((ProjectReferenceNode)dataNode);
}
else if(dataNode is AuthorNode)
{

View File

@@ -0,0 +1,100 @@
#region BSD License
/*
Copyright (c) 2004-2005 Matthew Holmes (matthew@wildfiregames.com), Dan Moorehead (dan05a@gmail.com)
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the
distribution.
* The name of the author may not be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#endregion
using System;
using System.Xml;
using Prebuild.Core.Attributes;
using Prebuild.Core.Interfaces;
using Prebuild.Core.Utilities;
namespace Prebuild.Core.Nodes
{
/// <summary>
///
/// </summary>
[DataNode("ProjectReference")]
public class ProjectReferenceNode : DataNode, IComparable
{
#region Fields
private string m_Name = "unknown";
private string m_Include;
#endregion
#region Properties
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get
{
return m_Name;
}
}
/// <summary>
/// Gets the path.
/// </summary>
/// <value>The path.</value>
public string Include
{
get
{
return m_Include;
}
}
#endregion
#region Public Methods
/// <summary>
/// Parses the specified node.
/// </summary>
/// <param name="node">The node.</param>
public override void Parse(XmlNode node)
{
m_Name = Helper.AttributeValue(node, "name", m_Name);
m_Include = Helper.AttributeValue(node, "include", m_Include);
}
#endregion
#region IComparable Members
public int CompareTo(object obj)
{
ProjectReferenceNode that = (ProjectReferenceNode)obj;
return this.m_Name.CompareTo(that.m_Name);
}
#endregion
}
}

258
Prebuild/src/Core/Targets/VSGenericTarget.cs Normal file → Executable file
View File

@@ -154,9 +154,9 @@ namespace Prebuild.Core.Targets
}
private void WriteProject(SolutionNode solution, ProjectNode project)
{
{
if (!tools.ContainsKey(project.Language))
{
{
throw new UnknownLanguageException("Unknown .NET language: " + project.Language);
}
@@ -167,6 +167,23 @@ namespace Prebuild.Core.Targets
kernel.CurrentWorkingDirectory.Push();
Helper.SetCurrentDir(Path.GetDirectoryName(projectFile));
FrameworkVersion fv = project.FrameworkVersion;
if (fv == FrameworkVersion.net5_0 || fv == FrameworkVersion.net6_0 || fv == FrameworkVersion.netstandard2_0)
{
// Write the newer .csproj file format
WriteProjectDotNet(solution, project, ps);
}
else
{
WriteProjectFramework(solution, project, toolInfo, projectFile, ps);
}
kernel.CurrentWorkingDirectory.Pop();
}
private void WriteProjectFramework(SolutionNode solution, ProjectNode project, ToolInfo toolInfo, string projectFile, StreamWriter ps)
{
#region Project File
using (ps)
{
@@ -260,77 +277,16 @@ namespace Prebuild.Core.Targets
//ps.WriteLine(" </Settings>");
Dictionary<ReferenceNode, ProjectNode> projectReferences = new Dictionary<ReferenceNode, ProjectNode>();
List<ReferenceNode> otherReferences = new List<ReferenceNode>();
// Output warnings if NET6 stuff is in a Framework4 definition
if (project.ProjectReferences.Count > 0) {
kernel.Log.Write(LogType.Warning, "ProjectReference is not processed for Frameworks.");
}
if (project.PackageReferences.Count > 0) {
kernel.Log.Write(LogType.Warning, "PackageReference is not processed for Frameworks.");
}
foreach (ReferenceNode refr in project.References)
{
ProjectNode projectNode = FindProjectInSolution(refr.Name, solution);
if (projectNode == null)
otherReferences.Add(refr);
else
projectReferences.Add(refr, projectNode);
}
// Assembly References
ps.WriteLine(" <ItemGroup>");
foreach (ReferenceNode refr in otherReferences)
{
ps.Write(" <Reference");
ps.Write(" Include=\"");
ps.Write(refr.Name);
ps.WriteLine("\" >");
ps.Write(" <Name>");
ps.Write(refr.Name);
ps.WriteLine("</Name>");
if(!String.IsNullOrEmpty(refr.Path))
{
// Use absolute path to assembly (for determining assembly type)
string absolutePath = Path.Combine(project.FullPath, refr.Path);
if(File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "exe"))) {
// Assembly is an executable (exe)
ps.WriteLine(" <HintPath>{0}</HintPath>", Helper.MakeFilePath(refr.Path, refr.Name, "exe"));
} else if(File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "dll"))) {
// Assembly is an library (dll)
ps.WriteLine(" <HintPath>{0}</HintPath>", Helper.MakeFilePath(refr.Path, refr.Name, "dll"));
} else {
string referencePath = Helper.MakeFilePath(refr.Path, refr.Name, "dll");
kernel.Log.Write(LogType.Warning, "Reference \"{0}\": The specified file doesn't exist.", referencePath);
ps.WriteLine(" <HintPath>{0}</HintPath>", Helper.MakeFilePath(refr.Path, refr.Name, "dll"));
}
}
ps.WriteLine(" <Private>{0}</Private>", refr.LocalCopy);
ps.WriteLine(" </Reference>");
}
ps.WriteLine(" </ItemGroup>");
//Project References
ps.WriteLine(" <ItemGroup>");
foreach (KeyValuePair<ReferenceNode, ProjectNode> pair in projectReferences)
{
ToolInfo tool = tools[pair.Value.Language];
if (tools == null)
throw new UnknownLanguageException();
string path =
Helper.MakePathRelativeTo(project.FullPath,
Helper.MakeFilePath(pair.Value.FullPath, pair.Value.Name, tool.FileExtension));
ps.WriteLine(" <ProjectReference Include=\"{0}\">", path);
// TODO: Allow reference to visual basic projects
ps.WriteLine(" <Name>{0}</Name>", pair.Value.Name);
ps.WriteLine(" <Project>{0}</Project>", pair.Value.Guid.ToString("B").ToUpper());
ps.WriteLine(" <Package>{0}</Package>", tool.Guid.ToUpper());
//This is the Copy Local flag in VS
ps.WriteLine(" <Private>{0}</Private>", pair.Key.LocalCopy);
ps.WriteLine(" </ProjectReference>");
}
ps.WriteLine(" </ItemGroup>");
// Output the ItemGroup for project.References
WriteProjectReferences(solution, project, ps);
// ps.WriteLine(" </Build>");
ps.WriteLine(" <ItemGroup>");
@@ -351,7 +307,8 @@ namespace Prebuild.Core.Targets
}
foreach (string filePath in project.Files)
#region Files
foreach (string filePath in project.Files)
{
// Add the filePath with the destination as the key
// will use it later to form the copy parameters with Include lists
@@ -526,6 +483,7 @@ namespace Prebuild.Core.Targets
}
}
ps.WriteLine(" </ItemGroup>");
#endregion
/*
* Copy Task
@@ -611,11 +569,159 @@ namespace Prebuild.Core.Targets
ps.WriteLine("</Project>");
}
#endregion
kernel.CurrentWorkingDirectory.Pop();
}
private void WriteSolution(SolutionNode solution, bool writeSolutionToDisk)
private void WriteProjectDotNet(SolutionNode solution, ProjectNode project, StreamWriter ps)
{
#region Project File
using (ps)
{
ps.WriteLine("<Project Sdk=\"Microsoft.NET.Sdk\">");
ps.WriteLine();
ps.WriteLine(" <PropertyGroup>");
ps.WriteLine(" <TargetFramework>{0}</TargetFramework>", project.FrameworkVersion.ToString().Replace("_","."));
ps.WriteLine(" <AssemblyName>{0}</AssemblyName>", project.Name);
ps.WriteLine(" </PropertyGroup>");
ps.WriteLine();
// For .NET5/6 files, the Configuration section does not specify a build target
// so here we look for the "unknown" target type for the specified parameters.
foreach (ConfigurationNode conf in project.Configurations)
{
if (conf.Name == "unknown")
{
ps.WriteLine(" <PropertyGroup>");
string[] optionNames = new string[] { "OutputPath", "OutputType", "RootNamespace" };
foreach (var opt in optionNames)
{
if (conf.Options.IsDefined(opt))
{
ps.WriteLine(" <{0}>{1}</{0}>", opt,
Helper.EndPath(Helper.NormalizePath(conf.Options[opt].ToString())));
}
}
ps.WriteLine(" </PropertyGroup>");
ps.WriteLine();
}
}
if (project.ProjectReferences.Count > 0)
{
ps.WriteLine(" <ItemGroup>");
foreach (ProjectReferenceNode refer in project.ProjectReferences)
{
ps.WriteLine(" <ProjectReference Include=\"{0}\" />", refer.Include);
}
ps.WriteLine(" </ItemGroup>");
ps.WriteLine();
}
if (project.PackageReferences.Count > 0)
{
ps.WriteLine(" <ItemGroup>");
foreach (PackageReferenceNode pack in project.PackageReferences)
{
ps.WriteLine(" <PackageReference Include=\"{0}\" Version=\"{1}\" />",
pack.Name, pack.Version);
}
ps.WriteLine(" </ItemGroup>");
ps.WriteLine();
}
// Output the ItemGroup for project.References
WriteProjectReferences(solution, project, ps);
ps.WriteLine("</Project>");
}
#endregion
}
private void WriteProjectReferences(SolutionNode solution, ProjectNode project, StreamWriter ps)
{
Dictionary<ReferenceNode, ProjectNode> projectReferences = new Dictionary<ReferenceNode, ProjectNode>();
List<ReferenceNode> otherReferences = new List<ReferenceNode>();
foreach (ReferenceNode refr in project.References)
{
ProjectNode projectNode = FindProjectInSolution(refr.Name, solution);
if (projectNode == null)
otherReferences.Add(refr);
else
projectReferences.Add(refr, projectNode);
}
// Assembly References
if (otherReferences.Count > 0)
{
ps.WriteLine(" <ItemGroup>");
foreach (ReferenceNode refr in otherReferences)
{
ps.Write(" <Reference");
ps.Write(" Include=\"");
ps.Write(refr.Name);
ps.WriteLine("\" >");
ps.Write(" <Name>");
ps.Write(refr.Name);
ps.WriteLine("</Name>");
if(!String.IsNullOrEmpty(refr.Path))
{
// Use absolute path to assembly (for determining assembly type)
string absolutePath = Path.Combine(project.FullPath, refr.Path);
if(File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "exe")))
{
// Assembly is an executable (exe)
ps.WriteLine(" <HintPath>{0}</HintPath>", Helper.MakeFilePath(refr.Path, refr.Name, "exe"));
} else if(File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "dll")))
{
// Assembly is an library (dll)
ps.WriteLine(" <HintPath>{0}</HintPath>", Helper.MakeFilePath(refr.Path, refr.Name, "dll"));
} else
{
string referencePath = Helper.MakeFilePath(refr.Path, refr.Name, "dll");
kernel.Log.Write(LogType.Warning, "Reference \"{0}\": The specified file doesn't exist.", referencePath);
ps.WriteLine(" <HintPath>{0}</HintPath>", Helper.MakeFilePath(refr.Path, refr.Name, "dll"));
}
}
ps.WriteLine(" <Private>{0}</Private>", refr.LocalCopy);
ps.WriteLine(" </Reference>");
}
ps.WriteLine(" </ItemGroup>");
ps.WriteLine();
}
//Project References
if (projectReferences.Count > 0)
{
ps.WriteLine(" <ItemGroup>");
foreach (KeyValuePair<ReferenceNode, ProjectNode> pair in projectReferences)
{
ToolInfo tool = tools[pair.Value.Language];
if (tools == null)
throw new UnknownLanguageException();
string path =
Helper.MakePathRelativeTo(project.FullPath,
Helper.MakeFilePath(pair.Value.FullPath, pair.Value.Name, tool.FileExtension));
ps.WriteLine(" <ProjectReference Include=\"{0}\">", path);
// TODO: Allow reference to visual basic projects
ps.WriteLine(" <Name>{0}</Name>", pair.Value.Name);
ps.WriteLine(" <Project>{0}</Project>", pair.Value.Guid.ToString("B").ToUpper());
ps.WriteLine(" <Package>{0}</Package>", tool.Guid.ToUpper());
//This is the Copy Local flag in VS
ps.WriteLine(" <Private>{0}</Private>", pair.Key.LocalCopy);
ps.WriteLine(" </ProjectReference>");
}
ps.WriteLine(" </ItemGroup>");
ps.WriteLine();
}
}
private void WriteSolution(SolutionNode solution, bool writeSolutionToDisk)
{
kernel.Log.Write("Creating {0} solution and project files", VersionName);

525
Prebuild/src/Prebuild.csproj Normal file → Executable file
View File

@@ -1,253 +1,274 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7F415321-0000-0000-0000-000000000000}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>Prebuild</AssemblyName>
<AssemblyOriginatorKeyFile>Prebuild.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<OutputType>Exe</OutputType>
<AppDesignerFolder>
</AppDesignerFolder>
<RootNamespace>Prebuild</RootNamespace>
<StartupObject>Prebuild.Prebuild</StartupObject>
<StartArguments>
</StartArguments>
<FileUpgradeFlags>
</FileUpgradeFlags>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ReleaseVersion>2.0.8</ReleaseVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugSymbols>True</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>False</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<WarningLevel>4</WarningLevel>
<NoWarn>1595</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<FileAlignment>4096</FileAlignment>
<Optimize>True</Optimize>
<OutputPath>bin\Release\</OutputPath>
<RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<WarningLevel>4</WarningLevel>
<NoWarn>1595</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.EnterpriseServices">
<Name>System.EnterpriseServices</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.Xml</Name>
</Reference>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="App.ico">
</EmbeddedResource>
<EmbeddedResource Include="data\prebuild-1.10.xsd">
</EmbeddedResource>
<EmbeddedResource Include="data\autotools.xml">
</EmbeddedResource>
<Compile Include="Core\Targets\VS2019Target.cs" />
<Compile Include="Prebuild.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\FatalException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Kernel.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\UnknownLanguageException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\WarningException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\DataNodeAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\OptionNodeAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\TargetAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Interfaces\IDataNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Interfaces\ITarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\AuthorNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\CleanFilesNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\CleanupNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ConfigurationNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ConfigurationNodeCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DatabaseProjectNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DatabaseReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DataNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DescriptionNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ExcludeNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\FileNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\FilesNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\MatchNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\OptionsNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProcessNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProjectNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ReferencePathNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\SolutionNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Parse\IfContext.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Parse\Preprocessor.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\AutotoolsTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\DebugTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\MakefileTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\MonoDevelopTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\NAntTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\SharpDevelop2Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\SharpDevelopTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\ToolInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2002Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2003Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2005Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2008Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2010Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2012Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2013Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VSGenericTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VSVersion.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\XcodeTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\CommandLineCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\CurrentDirectory.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\Helper.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\Log.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2015Target.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7F415321-0000-0000-0000-000000000000}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>prebuild</AssemblyName>
<AssemblyOriginatorKeyFile>Prebuild.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<OutputType>Exe</OutputType>
<AppDesignerFolder>
</AppDesignerFolder>
<RootNamespace>Prebuild</RootNamespace>
<StartupObject>Prebuild.Prebuild</StartupObject>
<StartArguments>
</StartArguments>
<FileUpgradeFlags>
</FileUpgradeFlags>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;ISWIN;NET_4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>True</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>False</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoWarn>1595</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>False</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;ISWIN;NET_4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>False</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<Optimize>True</Optimize>
<OutputPath>bin\Release\</OutputPath>
<RegisterForComInterop>False</RegisterForComInterop>
<RemoveIntegerChecks>False</RemoveIntegerChecks>
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<NoStdLib>False</NoStdLib>
<NoWarn>1595</NoWarn>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>False</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System">
<Name>System</Name>
<Private>False</Private>
</Reference>
<Reference Include="System.EnterpriseServices">
<Name>System.EnterpriseServices</Name>
<Private>False</Private>
</Reference>
<Reference Include="System.Xml">
<Name>System.Xml</Name>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="App.ico">
</EmbeddedResource>
<EmbeddedResource Include="data\prebuild-1.10.xsd">
</EmbeddedResource>
<EmbeddedResource Include="data\autotools.xml">
</EmbeddedResource>
<Compile Include="Core\Nodes\PackageReferenceNode.cs" />
<Compile Include="Core\Nodes\ProjectReferenceNode.cs" />
<Compile Include="Prebuild.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\FatalException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Kernel.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\UnknownLanguageException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\WarningException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\DataNodeAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\OptionNodeAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Attributes\TargetAttribute.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Interfaces\IDataNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Interfaces\ITarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\AuthorNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\CleanFilesNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\CleanupNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ConfigurationNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ConfigurationNodeCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DatabaseProjectNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DatabaseReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DataNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\DescriptionNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ExcludeNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\FileNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\FilesNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\MatchNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\OptionsNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProcessNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ProjectNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ReferenceNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\ReferencePathNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Nodes\SolutionNode.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Parse\IfContext.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Parse\Preprocessor.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\AutotoolsTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\DebugTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\MakefileTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\MonoDevelopTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\NAntTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\SharpDevelop2Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\SharpDevelopTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\ToolInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2002Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2003Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2005Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2008Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2010Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2012Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2013Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2015Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VS2019Target.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VSGenericTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\VSVersion.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Targets\XcodeTarget.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\CommandLineCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\CurrentDirectory.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\Helper.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Core\Utilities\Log.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,356 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://dnpb.sourceforge.net/schemas/prebuild-1.10.xsd"
xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.10.xsd">
<xs:annotation>
<xs:documentation>
Copyright (c) 2004-2007
Matthew Holmes (calefaction at houston . rr . com),
Dan Moorehead (dan05a at gmail . com),
David Hudson (jendave at yahoo dot com),
C.J. Adams-Collier (cjac at colliertech dot com)
.NET Prebuild is a cross-platform XML-driven pre-build tool which
allows developers to easily generate project or make files for major
IDE's and .NET development tools including: Visual Studio .NET 2002,
2003, and 2005, SharpDevelop, MonoDevelop, NAnt, Xcode and the GNU Autotools.
BSD License:
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the
distribution.
* The name of the author may not be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</xs:documentation>
</xs:annotation>
<xs:element name="Prebuild">
<xs:complexType>
<xs:sequence>
<xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="Solution" minOccurs="1" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="version" />
<xs:attribute name="checkOsVars" />
</xs:complexType>
</xs:element>
<xs:element name="Process" type="xs:string" />
<xs:element name="Solution">
<xs:complexType>
<xs:sequence>
<xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
<xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="Options" minOccurs="0" />
<xs:element ref="Files" minOccurs="0" />
<xs:element ref="Project" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="DatabaseProject" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="EmbeddedSolution" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="activeConfig" type="xs:string" default="Debug" />
<xs:attribute name="path" type="xs:string" default="" />
<xs:attribute name="version" type="xs:string" default="1.0.0" />
</xs:complexType>
</xs:element>
<xs:element name="EmbeddedSolution">
<xs:complexType>
<xs:sequence>
<xs:element ref="Process" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="Files" minOccurs="0" />
<xs:element ref="Project" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="DatabaseProject" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="EmbeddedSolution" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="activeConfig" type="xs:string" default="Debug" />
<xs:attribute name="path" type="xs:string" default="" />
<xs:attribute name="version" type="xs:string" default="1.0.0" />
</xs:complexType>
</xs:element>
<xs:element name="DatabaseProject">
<xs:complexType>
<xs:sequence>
<xs:element name="Author" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="DatabaseReference" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="path" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="DatabaseReference">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="providerId" type="xs:string" />
<xs:attribute name="providerName" type="xs:string" />
<xs:attribute name="connectionString" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Project">
<xs:complexType>
<xs:sequence>
<xs:element name="Author" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element ref="Configuration" minOccurs="1" maxOccurs="unbounded" />
<xs:element name="ReferencePath" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Reference" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="path" type="xs:string" />
<xs:attribute name="localCopy" type="xs:boolean" />
<xs:attribute name="version" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="ProjectReference" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="include" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:complexType>
</xs:element>
<xs:element name="PackageReference" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="version" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element ref="Files" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="designerFolder" type="xs:string" default="" />
<xs:attribute name="filterGroups" type="xs:string" default="" />
<xs:attribute name="path" type="xs:string" default="" />
<xs:attribute name="icon" type="xs:string" default="" />
<xs:attribute name="configFile" type="xs:string" default="" />
<xs:attribute name="version" type="xs:string" default="1.0.0" />
<xs:attribute name="guid" type="xs:string"/>
<xs:attribute name="language" default="C#">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="C#" />
<xs:enumeration value="VB.NET" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="type" default="Exe">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Exe" />
<xs:enumeration value="WinExe" />
<xs:enumeration value="Library" />
<xs:enumeration value="Web" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="runtime" default="Microsoft">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Microsoft" />
<xs:enumeration value="Mono" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="frameworkVersion" default="v2_0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="v2_0" />
<xs:enumeration value="v3_0" />
<xs:enumeration value="v3_5" />
<xs:enumeration value="v4_0" />
<xs:enumeration value="v4_5" />
<xs:enumeration value="v4_5_1" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="startupObject" type="xs:string" default="" />
<xs:attribute name="rootNamespace" type="xs:string" />
<xs:attribute name="assemblyName" type="xs:string" />
<xs:attribute name="generateAssemblyInfoFile" type="xs:boolean" default="false" />
<xs:attribute name="assemblyName" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence>
<xs:element ref="Options" minOccurs="0" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="platform" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Options">
<xs:complexType>
<xs:all>
<xs:element name="CompilerDefines" type="xs:string" minOccurs="0" />
<xs:element name="OptimizeCode" type="xs:boolean" minOccurs="0" />
<xs:element name="Prefer32Bit" type="xs:boolean" minOccurs="0" />
<xs:element name="CheckUnderflowOverflow" type="xs:boolean" minOccurs="0" />
<xs:element name="AllowUnsafe" type="xs:boolean" minOccurs="0" />
<xs:element name="PreBuildEvent" type="xs:string" minOccurs="0" />
<xs:element name="PostBuildEvent" type="xs:string" minOccurs="0" />
<xs:element name="RunPostBuildEvent" minOccurs="0" default="OnBuildSuccess">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="OnBuildSuccess" />
<xs:enumeration value="Always" />
<xs:enumeration value="OnOutputUpdated" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="RunScript" type="xs:string" minOccurs="0" />
<xs:element name="PreBuildEventArgs" type="xs:string" minOccurs="0" />
<xs:element name="PostBuildEventArgs" type="xs:string" minOccurs="0" />
<xs:element name="WarningLevel" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="4" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="WarningsAsErrors" type="xs:boolean" minOccurs="0" />
<xs:element name="SuppressWarnings" type="xs:string" minOccurs="0" />
<xs:element name="OutputPath" type="xs:string" minOccurs="0" />
<xs:element name="GenerateDocumentation" type="xs:boolean" minOccurs="0" />
<xs:element name="XmlDocFile" type="xs:string" minOccurs="0" />
<xs:element name="DebugInformation" type="xs:boolean" minOccurs="0" />
<xs:element name="RegisterComInterop" type="xs:boolean" minOccurs="0" />
<xs:element name="RemoveIntegerChecks" type="xs:boolean" minOccurs="0" />
<xs:element name="IncrementalBuild" type="xs:boolean" minOccurs="0" />
<xs:element name="BaseAddress" type="xs:string" minOccurs="0" />
<xs:element name="FileAlignment" type="xs:integer" minOccurs="0" />
<xs:element name="NoStdLib" type="xs:boolean" minOccurs="0" />
<xs:element name="KeyFile" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Files">
<xs:complexType>
<xs:sequence>
<xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="Match" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="File">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="resourceName" type="xs:string" default="" />
<xs:attribute name="buildAction" default="Compile">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="Compile" />
<xs:enumeration value="Content" />
<xs:enumeration value="EmbeddedResource" />
<xs:enumeration value="ApplicationDefinition" />
<xs:enumeration value="Page" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="subType" default="Code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Code" />
<xs:enumeration value="CodeBehind" />
<xs:enumeration value="Component" />
<xs:enumeration value="Form" />
<xs:enumeration value="Settings" />
<xs:enumeration value="UserControl" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="link" type="xs:boolean" />
<xs:attribute name="copyToOutput" default="Never">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Never" />
<xs:enumeration value="Always" />
<xs:enumeration value="PreserveNewest" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="preservePath" type="xs:boolean" />
<xs:attribute name="linkPath" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Match">
<xs:complexType>
<xs:sequence>
<xs:element ref="Exclude" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="path" type="xs:string" />
<xs:attribute name="pattern" type="xs:string" use="required" />
<xs:attribute name="recurse" type="xs:boolean" default="false" />
<xs:attribute name="useRegex" type="xs:boolean" default="false" />
<xs:attribute name="buildAction" default="Compile">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="Compile" />
<xs:enumeration value="Content" />
<xs:enumeration value="EmbeddedResource" />
<xs:enumeration value="ApplicationDefinition" />
<xs:enumeration value="Page" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="resourceName" type="xs:string" default="" />
<xs:attribute name="subType" default="Code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Code" />
<xs:enumeration value="CodeBehind" />
<xs:enumeration value="Component" />
<xs:enumeration value="Designer" />
<xs:enumeration value="Form" />
<xs:enumeration value="Settings" />
<xs:enumeration value="UserControl" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="link" type="xs:boolean" />
<xs:attribute name="copyToOutput" default="Never">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Never" />
<xs:enumeration value="Always" />
<xs:enumeration value="PreserveNewest" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="preservePath" type="xs:boolean" />
<xs:attribute name="linkPath" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Exclude">
<xs:complexType>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="pattern" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>

Binary file not shown.