Browse Source

Add support for TextTemplatingFileGenerator custom tool.

pull/16/merge
Matt Ward 15 years ago
parent
commit
43e851146a
  1. 16
      src/AddIns/Misc/TextTemplating/Project/Configuration/AssemblyInfo.cs
  2. 12
      src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingAppDomain.cs
  3. 12
      src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingAppDomainFactory.cs
  4. 13
      src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingCustomToolContext.cs
  5. 12
      src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingFileGenerator.cs
  6. 13
      src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingHost.cs
  7. 34
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingAppDomain.cs
  8. 15
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingAppDomainFactory.cs
  9. 23
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomToolContext.cs
  10. 69
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFileGenerator.cs
  11. 38
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFileGeneratorCustomTool.cs
  12. 42
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs
  13. 30
      src/AddIns/Misc/TextTemplating/Project/TextTemplating.addin
  14. 84
      src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj
  15. BIN
      src/AddIns/Misc/TextTemplating/Project/lib/Mono.TextTemplating.dll
  16. 16
      src/AddIns/Misc/TextTemplating/Test/Configuration/AssemblyInfo.cs
  17. 20
      src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingAppDomain.cs
  18. 22
      src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingAppDomainFactory.cs
  19. 24
      src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingCustomToolContext.cs
  20. 24
      src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingFileGenerator.cs
  21. 30
      src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingHost.cs
  22. 24
      src/AddIns/Misc/TextTemplating/Test/Helpers/TestableFileProjectItem.cs
  23. 26
      src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingFileGeneratorCustomTool.cs
  24. 73
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingFileGeneratorCustomToolTests.cs
  25. 83
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingFileGeneratorTests.cs
  26. 94
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingHostTests.cs
  27. 89
      src/AddIns/Misc/TextTemplating/Test/TextTemplating.Tests.csproj
  28. 110
      src/AddIns/Misc/TextTemplating/TextTemplating.sln

16
src/AddIns/Misc/TextTemplating/Project/Configuration/AssemblyInfo.cs

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System.Reflection;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("TextTemplating")]
[assembly: AssemblyDescription("Text Templating (T4) Addin for SharpDevelop")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

12
src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingAppDomain.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.TextTemplating
{
public interface ITextTemplatingAppDomain : IDisposable
{
AppDomain AppDomain { get; }
}
}

12
src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingAppDomainFactory.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.TextTemplating
{
public interface ITextTemplatingAppDomainFactory
{
ITextTemplatingAppDomain CreateTextTemplatingAppDomain(string applicationBase);
}
}

13
src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingCustomToolContext.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.TextTemplating
{
public interface ITextTemplatingCustomToolContext
{
FileProjectItem EnsureOutputFileIsInProject(FileProjectItem baseItem, string outputFileName);
}
}

12
src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingFileGenerator.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.TextTemplating
{
public interface ITextTemplatingFileGenerator : IDisposable
{
void ProcessTemplate();
}
}

13
src/AddIns/Misc/TextTemplating/Project/Src/ITextTemplatingHost.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.TextTemplating
{
public interface ITextTemplatingHost : IDisposable
{
bool ProcessTemplate(string inputFile, string outputFile);
string OutputFile { get; }
}
}

34
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingAppDomain.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using System.Reflection;
namespace ICSharpCode.TextTemplating
{
[Serializable]
public class TextTemplatingAppDomain : ITextTemplatingAppDomain
{
AppDomain appDomain;
public TextTemplatingAppDomain(string applicationBase)
{
AppDomainSetup setupInfo = new AppDomainSetup();
setupInfo.ApplicationBase = applicationBase;
this.appDomain = AppDomain.CreateDomain("TextTemplatingAppDomain", null, setupInfo);
}
public AppDomain AppDomain {
get { return this.appDomain; }
}
public void Dispose()
{
if (this.appDomain != null) {
AppDomain.Unload(this.appDomain);
this.appDomain = null;
}
}
}
}

15
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingAppDomainFactory.cs

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.TextTemplating
{
public class TextTemplatingAppDomainFactory : ITextTemplatingAppDomainFactory
{
public ITextTemplatingAppDomain CreateTextTemplatingAppDomain(string applicationBase)
{
return new TextTemplatingAppDomain(applicationBase);
}
}
}

23
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingCustomToolContext.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.TextTemplating
{
public class TextTemplatingCustomToolContext : ITextTemplatingCustomToolContext
{
CustomToolContext context;
public TextTemplatingCustomToolContext(CustomToolContext context)
{
this.context = context;
}
public FileProjectItem EnsureOutputFileIsInProject(FileProjectItem baseItem, string outputFileName)
{
return context.EnsureOutputFileIsInProject(baseItem, outputFileName);
}
}
}

69
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFileGenerator.cs

@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.TextTemplating
{
public class TextTemplatingFileGenerator : ITextTemplatingFileGenerator
{
ITextTemplatingHost host;
FileProjectItem projectFile;
ITextTemplatingCustomToolContext context;
public TextTemplatingFileGenerator(
ITextTemplatingHost host,
FileProjectItem projectFile,
ITextTemplatingCustomToolContext context)
{
this.host = host;
this.projectFile = projectFile;
this.context = context;
}
public void Dispose()
{
host.Dispose();
}
public void ProcessTemplate()
{
GenerateOutputFileForTemplate();
AddOutputFileToProjectIfRequired();
}
void GenerateOutputFileForTemplate()
{
string inputFileName = projectFile.FileName;
string outputFileName = GetOutputFileName(inputFileName);
host.ProcessTemplate(inputFileName, outputFileName);
}
string GetOutputFileName(string inputFileName)
{
return Path.ChangeExtension(inputFileName, ".cs");
}
void AddOutputFileToProjectIfRequired()
{
context.EnsureOutputFileIsInProject(projectFile, host.OutputFile);
}
// internal static void LogicalSetData (string name, object value,
// System.CodeDom.Compiler.CompilerErrorCollection errors)
// {
// //FIXME: CallContext.LogicalSetData not implemented in Mono
// try {
// System.Runtime.Remoting.Messaging.CallContext.LogicalSetData (name, value);
// } catch (NotImplementedException) {
// errors.Add (new System.CodeDom.Compiler.CompilerError (
// null, -1, -1, null,
// "Could not set " + name + " - CallContext.LogicalSetData not implemented in this Mono version"
// ) { IsWarning = true });
// }
// }
}
}

38
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFileGeneratorCustomTool.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.CodeDom.Compiler;
using System.IO;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.TextTemplating
{
public class TextTemplatingFileGeneratorCustomTool : ICustomTool
{
public void GenerateCode(FileProjectItem item, CustomToolContext context)
{
using (var generator = CreateTextTemplatingFileGenerator(item, context)) {
generator.ProcessTemplate();
}
}
protected virtual ITextTemplatingFileGenerator CreateTextTemplatingFileGenerator(
FileProjectItem projectFile,
CustomToolContext context)
{
var appDomainFactory = new TextTemplatingAppDomainFactory();
string applicationBase = GetAssemblyBaseLocation();
var host = new TextTemplatingHost(appDomainFactory, applicationBase);
var textTemplatingCustomToolContext = new TextTemplatingCustomToolContext(context);
return new TextTemplatingFileGenerator(host, projectFile, textTemplatingCustomToolContext);
}
string GetAssemblyBaseLocation()
{
string location = GetType().Assembly.Location;
return Path.GetDirectoryName(location);
}
}
}

42
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingHost.cs

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using Mono.TextTemplating;
namespace ICSharpCode.TextTemplating
{
public class TextTemplatingHost : TemplateGenerator, ITextTemplatingHost
{
ITextTemplatingAppDomainFactory appDomainFactory;
ITextTemplatingAppDomain templatingAppDomain;
string applicationBase;
public TextTemplatingHost(ITextTemplatingAppDomainFactory appDomainFactory, string applicationBase)
{
this.appDomainFactory = appDomainFactory;
this.applicationBase = applicationBase;
}
public void Dispose()
{
if (templatingAppDomain != null) {
templatingAppDomain.Dispose();
templatingAppDomain = null;
}
}
public override AppDomain ProvideTemplatingAppDomain(string content)
{
if (templatingAppDomain == null) {
CreateAppDomain();
}
return templatingAppDomain.AppDomain;
}
void CreateAppDomain()
{
templatingAppDomain = appDomainFactory.CreateTextTemplatingAppDomain(applicationBase);
}
}
}

30
src/AddIns/Misc/TextTemplating/Project/TextTemplating.addin

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
<AddIn
name="Text Templating"
author="Matt Ward"
copyright="prj:///doc/copyright.txt"
description="Adds support for T4 templates."
addInManagerHidden="preinstalled">
<Manifest>
<Identity name="ICSharpCode.TextTemplating"/>
</Manifest>
<Runtime>
<Import assembly="TextTemplating.dll"/>
</Runtime>
<Path name="/SharpDevelop/Workbench/FileFilter">
<FileFilter
id="T4"
insertbefore="AllFiles"
name="Text Template Files (*.tt)"
extensions="*.tt"/>
</Path>
<Path name="/SharpDevelop/CustomTools">
<CustomTool
id="TextTemplatingFileGenerator"
class="ICSharpCode.TextTemplating.TextTemplatingFileGeneratorCustomTool"
fileNamePattern=".tt"/>
</Path>
</AddIn>

84
src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj

@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<ProjectGuid>{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.TextTemplating</RootNamespace>
<AssemblyName>TextTemplating</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<OutputPath>..\..\..\..\..\AddIns\Misc\TextTemplating\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x86' ">
<PlatformTarget>x86</PlatformTarget>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<StartAction>Project</StartAction>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.TextTemplating">
<HintPath>lib\Mono.TextTemplating.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\ITextTemplatingAppDomain.cs" />
<Compile Include="Src\ITextTemplatingAppDomainFactory.cs" />
<Compile Include="Src\ITextTemplatingCustomToolContext.cs" />
<Compile Include="Src\ITextTemplatingHost.cs" />
<Compile Include="Src\ITextTemplatingFileGenerator.cs" />
<Compile Include="Src\TextTemplatingAppDomain.cs" />
<Compile Include="Src\TextTemplatingAppDomainFactory.cs" />
<Compile Include="Src\TextTemplatingCustomToolContext.cs" />
<Compile Include="Src\TextTemplatingFileGenerator.cs" />
<Compile Include="Src\TextTemplatingFileGeneratorCustomTool.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\TextTemplatingHost.cs" />
</ItemGroup>
<ItemGroup>
<None Include="TextTemplating.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

BIN
src/AddIns/Misc/TextTemplating/Project/lib/Mono.TextTemplating.dll

Binary file not shown.

16
src/AddIns/Misc/TextTemplating/Test/Configuration/AssemblyInfo.cs

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System.Reflection;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("TextTemplating.Tests")]
[assembly: AssemblyDescription("Text Templating (T4) Addin Tests")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

20
src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingAppDomain.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.TextTemplating;
namespace TextTemplating.Tests.Helpers
{
public class FakeTextTemplatingAppDomain : ITextTemplatingAppDomain
{
public bool IsDisposeCalled;
public AppDomain AppDomain { get; set; }
public void Dispose()
{
IsDisposeCalled = true;
}
}
}

22
src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingAppDomainFactory.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.TextTemplating;
namespace TextTemplating.Tests.Helpers
{
public class FakeTextTemplatingAppDomainFactory : ITextTemplatingAppDomainFactory
{
public FakeTextTemplatingAppDomain FakeTextTemplatingAppDomain = new FakeTextTemplatingAppDomain();
public int CreateTextTemplatingAppDomainCallCount;
public string ApplicationBasePassedToCreateTextTemplatingAppDomain;
public ITextTemplatingAppDomain CreateTextTemplatingAppDomain(string applicationBase)
{
ApplicationBasePassedToCreateTextTemplatingAppDomain = applicationBase;
CreateTextTemplatingAppDomainCallCount++;
return FakeTextTemplatingAppDomain;
}
}
}

24
src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingCustomToolContext.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextTemplating;
namespace TextTemplating.Tests.Helpers
{
public class FakeTextTemplatingCustomToolContext : ITextTemplatingCustomToolContext
{
public FileProjectItem BaseItemPassedToEnsureOutputFileIsInProject;
public string OutputFileNamePassedToEnsureOutputFileIsInProject;
public TestableFileProjectItem EnsureOutputFileIsInProjectReturnValue = new TestableFileProjectItem(@"d:\Projects\MyProject\template.tt");
public FileProjectItem EnsureOutputFileIsInProject(FileProjectItem baseItem, string outputFileName)
{
BaseItemPassedToEnsureOutputFileIsInProject = baseItem;
OutputFileNamePassedToEnsureOutputFileIsInProject = outputFileName;
return EnsureOutputFileIsInProjectReturnValue;
}
}
}

24
src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingFileGenerator.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.TextTemplating;
namespace TextTemplating.Tests.Helpers
{
public class FakeTextTemplatingFileGenerator : ITextTemplatingFileGenerator
{
public bool IsProcessTemplateCalled;
public bool IsDisposeCalledAfterTemplateProcessed;
public void ProcessTemplate()
{
IsProcessTemplateCalled = true;
}
public void Dispose()
{
IsDisposeCalledAfterTemplateProcessed = IsProcessTemplateCalled;
}
}
}

30
src/AddIns/Misc/TextTemplating/Test/Helpers/FakeTextTemplatingHost.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.TextTemplating;
namespace TextTemplating.Tests.Helpers
{
public class FakeTextTemplatingHost : ITextTemplatingHost
{
public string InputFilePassedToProcessTemplate;
public string OutputFilePassedToProcessTemplate;
public bool ProcessTemplateReturnValue = true;
public bool IsDisposeCalled;
public bool ProcessTemplate(string inputFile, string outputFile)
{
InputFilePassedToProcessTemplate = inputFile;
OutputFilePassedToProcessTemplate = outputFile;
return ProcessTemplateReturnValue;
}
public void Dispose()
{
IsDisposeCalled = true;
}
public string OutputFile { get; set; }
}
}

24
src/AddIns/Misc/TextTemplating/Test/Helpers/TestableFileProjectItem.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
namespace TextTemplating.Tests.Helpers
{
public class TestableFileProjectItem : FileProjectItem
{
string fileName;
public TestableFileProjectItem(string fileName)
: base(null, ItemType.None)
{
this.fileName = fileName;
}
public override string FileName {
get { return fileName; }
set { fileName = value; }
}
}
}

26
src/AddIns/Misc/TextTemplating/Test/Helpers/TestableTextTemplatingFileGeneratorCustomTool.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextTemplating;
namespace TextTemplating.Tests.Helpers
{
public class TestableTextTemplatingFileGeneratorCustomTool : TextTemplatingFileGeneratorCustomTool
{
public FileProjectItem ProjectFilePassedToCreateTextTemplatingFileGenerator;
public CustomToolContext ContextPassedToCreateTextTemplatingFileGenerator;
public FakeTextTemplatingFileGenerator FakeTextTemplatingFileGenerator = new FakeTextTemplatingFileGenerator();
protected override ITextTemplatingFileGenerator CreateTextTemplatingFileGenerator(
FileProjectItem projectFile,
CustomToolContext context)
{
ProjectFilePassedToCreateTextTemplatingFileGenerator = projectFile;
ContextPassedToCreateTextTemplatingFileGenerator = context;
return FakeTextTemplatingFileGenerator;
}
}
}

73
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingFileGeneratorCustomToolTests.cs

@ -0,0 +1,73 @@ @@ -0,0 +1,73 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextTemplating;
using NUnit.Framework;
using TextTemplating.Tests.Helpers;
namespace TextTemplating.Tests
{
[TestFixture]
public class TextTemplatingFileGeneratorCustomToolTests
{
TestableTextTemplatingFileGeneratorCustomTool customTool;
void CreateCustomTool()
{
customTool = new TestableTextTemplatingFileGeneratorCustomTool();
}
IProject CreateProject()
{
return new MSBuildFileProject(@"d:\projects\test.csproj", "test");
}
FileProjectItem GenerateCodeWithProjectFile()
{
var file = new TestableFileProjectItem("test.tt");
customTool.GenerateCode(file, null);
return file;
}
[Test]
public void GenerateCode_ProjectFilePassed_ProjectFileUsedToCreateTextTemplatingFileGenerator()
{
CreateCustomTool();
var file = GenerateCodeWithProjectFile();
Assert.AreEqual(file, customTool.ProjectFilePassedToCreateTextTemplatingFileGenerator);
}
[Test]
public void GenerateCode_CustomToolContextPassed_CustomToolContextUsedToCreateTextTemplatingFileGenerator()
{
CreateCustomTool();
IProject project = CreateProject();
var context = new CustomToolContext(project);
customTool.GenerateCode(null, context);
Assert.AreEqual(context, customTool.ContextPassedToCreateTextTemplatingFileGenerator);
}
[Test]
public void GenerateCode_ProjectFilePassed_TemplateIsProcessed()
{
CreateCustomTool();
GenerateCodeWithProjectFile();
Assert.IsTrue(customTool.FakeTextTemplatingFileGenerator.IsProcessTemplateCalled);
}
[Test]
public void GenerateCode_ProjectFilePassed_TextTemplatingFileGeneratorIsDisposedAfterTemplateIsProcessed()
{
CreateCustomTool();
GenerateCodeWithProjectFile();
Assert.IsTrue(customTool.FakeTextTemplatingFileGenerator.IsDisposeCalledAfterTemplateProcessed);
}
}
}

83
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingFileGeneratorTests.cs

@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextTemplating;
using NUnit.Framework;
using TextTemplating.Tests.Helpers;
namespace TextTemplating.Tests
{
[TestFixture]
public class TextTemplatingFileGeneratorTests
{
TextTemplatingFileGenerator generator;
FakeTextTemplatingHost templatingHost;
FakeTextTemplatingCustomToolContext customToolContext;
FileProjectItem ProcessTemplate(string fileName)
{
var projectFile = CreateGenerator(fileName);
generator.ProcessTemplate();
return projectFile;
}
FileProjectItem CreateGenerator(string fileName)
{
templatingHost = new FakeTextTemplatingHost();
var projectFile = new TestableFileProjectItem(fileName);
customToolContext = new FakeTextTemplatingCustomToolContext();
generator = new TextTemplatingFileGenerator(templatingHost, projectFile, customToolContext);
return projectFile;
}
[Test]
public void ProcessTemplate_TemplateFileInProjectPassed_TemplatingHostProcessesFile()
{
string fileName = @"d:\projects\MyProject\template.tt";
ProcessTemplate(fileName);
Assert.AreEqual(fileName, templatingHost.InputFilePassedToProcessTemplate);
}
[Test]
public void ProcessTemplate_TemplateFileInProjectPassed_OutputFileNamePassedIsInputFileWithFileExtensionChangedToCSharpFileExtension()
{
ProcessTemplate(@"d:\projects\MyProject\template.tt");
string expectedOutputFileName = @"d:\projects\MyProject\template.cs";
Assert.AreEqual(expectedOutputFileName, templatingHost.OutputFilePassedToProcessTemplate);
}
[Test]
public void Dispose_TemplateHostUsedToCreateFileGenerator_TemplateHostIsDisposed()
{
CreateGenerator(@"d:\template.tt");
generator.Dispose();
Assert.IsTrue(templatingHost.IsDisposeCalled);
}
[Test]
public void ProcessTemplate_TemplateFileInProjectPassed_TemplateFileInProjectUsedWhenCheckingIfOutputFileExistsInProject()
{
var file = ProcessTemplate(@"d:\template.tt");
Assert.AreEqual(file, customToolContext.BaseItemPassedToEnsureOutputFileIsInProject);
}
[Test]
public void ProcessTemplate_OutputFileNameChangedWhenTemplateProcessed_NewOutputFileNameIsUsedWhenCheckingIfOutputFileExistsInProject()
{
CreateGenerator(@"d:\template.tt");
templatingHost.OutputFile = @"d:\changed-output.test";
generator.ProcessTemplate();
Assert.AreEqual(@"d:\changed-output.test", customToolContext.OutputFileNamePassedToEnsureOutputFileIsInProject);
}
}
}

94
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingHostTests.cs

@ -0,0 +1,94 @@ @@ -0,0 +1,94 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.TextTemplating;
using NUnit.Framework;
using TextTemplating.Tests.Helpers;
namespace TextTemplating.Tests
{
[TestFixture]
public class TextTemplatingHostTests
{
TextTemplatingHost host;
FakeTextTemplatingAppDomainFactory textTemplatingAppDomainFactory;
FakeTextTemplatingAppDomain textTemplatingAppDomain;
void CreateHost()
{
CreateHost(String.Empty);
}
void CreateHost(string applicationBase)
{
textTemplatingAppDomainFactory = new FakeTextTemplatingAppDomainFactory();
textTemplatingAppDomain = textTemplatingAppDomainFactory.FakeTextTemplatingAppDomain;
host = new TextTemplatingHost(textTemplatingAppDomainFactory, applicationBase);
}
[Test]
public void ProvideTemplatingAppDomain_PassedContentName_ReturnsDomainFromTextTemplatingAppDomainFactory()
{
CreateHost();
AppDomain expectedAppDomain = AppDomain.CreateDomain("TextTemplatingHostTests");
textTemplatingAppDomain.AppDomain = expectedAppDomain;
AppDomain actualAppDomain = host.ProvideTemplatingAppDomain("test");
Assert.AreEqual(expectedAppDomain, actualAppDomain);
}
[Test]
public void Dispose_DisposingHostAfterProvideTemplatingAppDomainCalled_DisposesTemplatingAppDomain()
{
CreateHost();
host.ProvideTemplatingAppDomain("test");
host.Dispose();
Assert.IsTrue(textTemplatingAppDomain.IsDisposeCalled);
}
[Test]
public void Dispose_DisposingHostWhenProvideTemplatingAppDomainIsNotCalled_DoesNotThrowNullReferenceException()
{
CreateHost();
Assert.DoesNotThrow(() => host.Dispose());
}
[Test]
public void ProvideTemplatingAppDomain_MethodCalledTwice_AppDomainCreatedOnce()
{
CreateHost();
host.ProvideTemplatingAppDomain("test");
host.ProvideTemplatingAppDomain("test");
Assert.AreEqual(1, textTemplatingAppDomainFactory.CreateTextTemplatingAppDomainCallCount);
}
[Test]
public void Dispose_DisposeCalledTwiceHostAfterProvideTemplatingAppDomainCalled_DisposesTemplatingAppDomainOnce()
{
CreateHost();
host.ProvideTemplatingAppDomain("test");
host.Dispose();
textTemplatingAppDomain.IsDisposeCalled = false;
host.Dispose();
Assert.IsFalse(textTemplatingAppDomain.IsDisposeCalled);
}
[Test]
public void ProvideTemplatingAppDomain_PassedContentName_HostApplicationBaseIsUsedAsAppDomainSetupApplicationBase()
{
string applicationBase = @"d:\sharpdevelop\addins\texttemplating";
CreateHost(applicationBase);
host.ProvideTemplatingAppDomain("test");
string actualApplicationBase = textTemplatingAppDomainFactory.ApplicationBasePassedToCreateTextTemplatingAppDomain;
Assert.AreEqual(applicationBase, actualApplicationBase);
}
}
}

89
src/AddIns/Misc/TextTemplating/Test/TextTemplating.Tests.csproj

@ -0,0 +1,89 @@ @@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<ProjectGuid>{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputType>Library</OutputType>
<RootNamespace>TextTemplating.Tests</RootNamespace>
<AssemblyName>TextTemplating.Tests</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AppDesignerFolder>Properties</AppDesignerFolder>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<OutputPath>..\..\..\..\..\..\bin\UnitTests\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x86' ">
<PlatformTarget>x86</PlatformTarget>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<StartAction>Project</StartAction>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.TextTemplating">
<HintPath>..\Project\lib\Mono.TextTemplating.dll</HintPath>
</Reference>
<Reference Include="nunit.framework">
<HintPath>..\..\..\..\Tools\NUnit\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Helpers\FakeTextTemplatingAppDomain.cs" />
<Compile Include="Helpers\FakeTextTemplatingAppDomainFactory.cs" />
<Compile Include="Helpers\FakeTextTemplatingCustomToolContext.cs" />
<Compile Include="Helpers\FakeTextTemplatingHost.cs" />
<Compile Include="Helpers\FakeTextTemplatingFileGenerator.cs" />
<Compile Include="Helpers\TestableFileProjectItem.cs" />
<Compile Include="Helpers\TestableTextTemplatingFileGeneratorCustomTool.cs" />
<Compile Include="Src\TextTemplatingFileGeneratorCustomToolTests.cs" />
<Compile Include="Src\TextTemplatingFileGeneratorTests.cs" />
<Compile Include="Src\TextTemplatingHostTests.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Configuration" />
<Folder Include="Src" />
<Folder Include="Helpers" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
</ProjectReference>
<ProjectReference Include="..\Project\TextTemplating.csproj">
<Project>{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}</Project>
<Name>TextTemplating</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

110
src/AddIns/Misc/TextTemplating/TextTemplating.sln

@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.1.0.7318-alpha
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextTemplating", "Project\TextTemplating.csproj", "{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "..\..\..\Libraries\AvalonDock\AvalonDock\AvalonDock.csproj", "{87E61430-4243-45F2-B74E-0A4C096CEBF3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "..\..\..\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "..\..\..\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "..\..\..\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextTemplating.Tests", "Test\TextTemplating.Tests.csproj", "{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "..\..\..\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|x86.Build.0 = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|x86.ActiveCfg = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|x86.Build.0 = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|x86.ActiveCfg = Release|x86
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Debug|x86.Build.0 = Debug|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Debug|x86.ActiveCfg = Debug|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Release|x86.Build.0 = Release|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Release|x86.ActiveCfg = Release|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Release|Any CPU.Build.0 = Release|Any CPU
{87E61430-4243-45F2-B74E-0A4C096CEBF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|x86.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|x86.Build.0 = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|x86.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Any CPU.Build.0 = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|x86.Build.0 = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|x86.Build.0 = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|x86.ActiveCfg = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|Any CPU.Build.0 = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|x86.Build.0 = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|x86.ActiveCfg = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Any CPU.Build.0 = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|x86.Build.0 = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|x86.ActiveCfg = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Any CPU.Build.0 = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Any CPU.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|x86.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|x86.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|x86.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|x86.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|x86.Build.0 = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|x86.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|x86.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|x86.ActiveCfg = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Any CPU.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Debug|x86.Build.0 = Debug|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Debug|x86.ActiveCfg = Debug|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Debug|Any CPU.Build.0 = Debug|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Debug|Any CPU.ActiveCfg = Debug|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Release|x86.Build.0 = Release|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Release|x86.ActiveCfg = Release|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Release|Any CPU.Build.0 = Release|x86
{5186325C-DD7F-4246-9BE7-3F384EFBF5A6}.Release|Any CPU.ActiveCfg = Release|x86
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|x86.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|x86.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|x86.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|x86.ActiveCfg = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|x86.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|x86.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|x86.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|x86.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
EndGlobal
Loading…
Cancel
Save