using System.Reflection; | |||||
using System.Runtime.CompilerServices; | |||||
using System.Runtime.InteropServices; | |||||
// Les informations générales relatives à un assembly dépendent de | |||||
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations | |||||
// associées à un assembly. | |||||
[assembly: AssemblyTitle("SIE.IVSDK")] | |||||
[assembly: AssemblyDescription("")] | |||||
[assembly: AssemblyConfiguration("")] | |||||
[assembly: AssemblyCompany("")] | |||||
[assembly: AssemblyProduct("SIE.IVSDK")] | |||||
[assembly: AssemblyCopyright("Copyright © 2022")] | |||||
[assembly: AssemblyTrademark("")] | |||||
[assembly: AssemblyCulture("")] | |||||
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly | |||||
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de | |||||
// COM, affectez la valeur true à l'attribut ComVisible sur ce type. | |||||
[assembly: ComVisible(false)] | |||||
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM | |||||
[assembly: Guid("28110bdb-998e-42d3-9732-f5cb7740f6b9")] | |||||
// Les informations de version pour un assembly se composent des quatre valeurs suivantes : | |||||
// | |||||
// Version principale | |||||
// Version secondaire | |||||
// Numéro de build | |||||
// Révision | |||||
// | |||||
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut | |||||
// en utilisant '*', comme indiqué ci-dessous : | |||||
// [assembly: AssemblyVersion("1.0.*")] | |||||
[assembly: AssemblyVersion("1.0.0.0")] | |||||
[assembly: AssemblyFileVersion("1.0.0.0")] |
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||||
<PropertyGroup> | |||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||||
<ProjectGuid>{28110BDB-998E-42D3-9732-F5CB7740F6B9}</ProjectGuid> | |||||
<OutputType>Library</OutputType> | |||||
<AppDesignerFolder>Properties</AppDesignerFolder> | |||||
<RootNamespace>SIE.IVSDK</RootNamespace> | |||||
<AssemblyName>SIE.IVSDK</AssemblyName> | |||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | |||||
<FileAlignment>512</FileAlignment> | |||||
<Deterministic>true</Deterministic> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||||
<DebugSymbols>true</DebugSymbols> | |||||
<DebugType>full</DebugType> | |||||
<Optimize>false</Optimize> | |||||
<OutputPath>bin\Debug\</OutputPath> | |||||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||||
<DebugType>pdbonly</DebugType> | |||||
<Optimize>true</Optimize> | |||||
<OutputPath>bin\Release\</OutputPath> | |||||
<DefineConstants>TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<Reference Include="System" /> | |||||
<Reference Include="System.Core" /> | |||||
<Reference Include="System.Xml.Linq" /> | |||||
<Reference Include="System.Data.DataSetExtensions" /> | |||||
<Reference Include="Microsoft.CSharp" /> | |||||
<Reference Include="System.Data" /> | |||||
<Reference Include="System.Net.Http" /> | |||||
<Reference Include="System.Xml" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Compile Include="Services\IPathService.cs" /> | |||||
<Compile Include="Services\ISolutionService.cs" /> | |||||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||||
</ItemGroup> | |||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||||
</Project> |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.IVSDK.Services | |||||
{ | |||||
public interface IPathService | |||||
{ | |||||
bool IsValidPath(string path, bool allowRelativePaths = false); | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.IVSDK.Services | |||||
{ | |||||
public interface ISolutionService | |||||
{ | |||||
void CreateProjectTemplatesFromSolution(string solutionPath, string directoryDestinationPath, string newSolutionName); | |||||
} | |||||
} |
| |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio Version 16 | |||||
VisualStudioVersion = 16.0.32901.82 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SIE.VSDK", "SIE.VSDK\SIE.VSDK.csproj", "{4BF7E556-D8FA-46EF-9655-13077E8D1BA6}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SIE.IVSDK", "SIE.IVSDK\SIE.IVSDK.csproj", "{28110BDB-998E-42D3-9732-F5CB7740F6B9}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SIE.VSDK.Test", "SIE.VSDK.Test\SIE.VSDK.Test.csproj", "{67ABA05D-465B-4F20-8112-A9D282541C80}" | |||||
EndProject | |||||
Global | |||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
Debug|Any CPU = Debug|Any CPU | |||||
Release|Any CPU = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
{4BF7E556-D8FA-46EF-9655-13077E8D1BA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{4BF7E556-D8FA-46EF-9655-13077E8D1BA6}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{4BF7E556-D8FA-46EF-9655-13077E8D1BA6}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{4BF7E556-D8FA-46EF-9655-13077E8D1BA6}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{28110BDB-998E-42D3-9732-F5CB7740F6B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{28110BDB-998E-42D3-9732-F5CB7740F6B9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{28110BDB-998E-42D3-9732-F5CB7740F6B9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{28110BDB-998E-42D3-9732-F5CB7740F6B9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{67ABA05D-465B-4F20-8112-A9D282541C80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{67ABA05D-465B-4F20-8112-A9D282541C80}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{67ABA05D-465B-4F20-8112-A9D282541C80}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{67ABA05D-465B-4F20-8112-A9D282541C80}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(SolutionProperties) = preSolution | |||||
HideSolutionNode = FALSE | |||||
EndGlobalSection | |||||
GlobalSection(ExtensibilityGlobals) = postSolution | |||||
SolutionGuid = {3437A0E5-7E74-48B6-9764-DF74597AA8F4} | |||||
EndGlobalSection | |||||
EndGlobal |
using System.Reflection; | |||||
using System.Runtime.CompilerServices; | |||||
using System.Runtime.InteropServices; | |||||
[assembly: AssemblyTitle("SIE.VSDK.Test")] | |||||
[assembly: AssemblyDescription("")] | |||||
[assembly: AssemblyConfiguration("")] | |||||
[assembly: AssemblyCompany("")] | |||||
[assembly: AssemblyProduct("SIE.VSDK.Test")] | |||||
[assembly: AssemblyCopyright("Copyright © 2022")] | |||||
[assembly: AssemblyTrademark("")] | |||||
[assembly: AssemblyCulture("")] | |||||
[assembly: ComVisible(false)] | |||||
[assembly: Guid("67aba05d-465b-4f20-8112-a9d282541c80")] | |||||
// [assembly: AssemblyVersion("1.0.*")] | |||||
[assembly: AssemblyVersion("1.0.0.0")] | |||||
[assembly: AssemblyFileVersion("1.0.0.0")] |
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<Import Project="..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" /> | |||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||||
<PropertyGroup> | |||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||||
<ProjectGuid>{67ABA05D-465B-4F20-8112-A9D282541C80}</ProjectGuid> | |||||
<OutputType>Library</OutputType> | |||||
<AppDesignerFolder>Properties</AppDesignerFolder> | |||||
<RootNamespace>SIE.VSDK.Test</RootNamespace> | |||||
<AssemblyName>SIE.VSDK.Test</AssemblyName> | |||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | |||||
<FileAlignment>512</FileAlignment> | |||||
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | |||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion> | |||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> | |||||
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath> | |||||
<IsCodedUITest>False</IsCodedUITest> | |||||
<TestProjectType>UnitTest</TestProjectType> | |||||
<NuGetPackageImportStamp> | |||||
</NuGetPackageImportStamp> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||||
<DebugSymbols>true</DebugSymbols> | |||||
<DebugType>full</DebugType> | |||||
<Optimize>false</Optimize> | |||||
<OutputPath>bin\Debug\</OutputPath> | |||||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||||
<DebugType>pdbonly</DebugType> | |||||
<Optimize>true</Optimize> | |||||
<OutputPath>bin\Release\</OutputPath> | |||||
<DefineConstants>TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System" /> | |||||
<Reference Include="System.Core" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Compile Include="SolutionServiceTest.cs" /> | |||||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<None Include="app.config" /> | |||||
<None Include="packages.config" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ProjectReference Include="..\SIE.IVSDK\SIE.IVSDK.csproj"> | |||||
<Project>{28110BDB-998E-42D3-9732-F5CB7740F6B9}</Project> | |||||
<Name>SIE.IVSDK</Name> | |||||
</ProjectReference> | |||||
<ProjectReference Include="..\SIE.VSDK\SIE.VSDK.csproj"> | |||||
<Project>{4bf7e556-d8fa-46ef-9655-13077e8d1ba6}</Project> | |||||
<Name>SIE.VSDK</Name> | |||||
</ProjectReference> | |||||
</ItemGroup> | |||||
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" /> | |||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> | |||||
<PropertyGroup> | |||||
<ErrorText>Ce projet fait référence à des packages NuGet qui sont manquants sur cet ordinateur. Utilisez l'option de restauration des packages NuGet pour les télécharger. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkID=322105. Le fichier manquant est : {0}.</ErrorText> | |||||
</PropertyGroup> | |||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props'))" /> | |||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets'))" /> | |||||
</Target> | |||||
<Import Project="..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" /> | |||||
</Project> |
using Microsoft.VisualStudio.TestTools.UnitTesting; | |||||
using SIE.IVSDK.Services; | |||||
using SIE.VSDK.Exceptions.DirectoryDestination; | |||||
using SIE.VSDK.Exceptions.Solution; | |||||
using SIE.VSDK.Services; | |||||
using System; | |||||
using System.IO; | |||||
namespace SIE.VSDK.Test | |||||
{ | |||||
[TestClass] | |||||
public class SolutionServiceTest | |||||
{ | |||||
private readonly ISolutionService _solutionService; | |||||
private string dirTest = Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetCurrentDirectory()).FullName).FullName).FullName).FullName; | |||||
public SolutionServiceTest() | |||||
{ | |||||
IPathService pathService = new PathService(); | |||||
_solutionService = new SolutionService(pathService); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(SolutionPathIsNullException), "Le chemin de la solution passé en premier paramètre est null !")] | |||||
public void TestSolutionPathIsNullError01() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(null, "",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(SolutionPathIsEmptyException), "Le chemin de la solution passé en premier paramètre eqt vide !")] | |||||
public void TestSolutionPathIsNotAFileError02() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(" ", "",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(InvalidSolutionPathException), "Le chemin de la solution passé en premier paramètre n'est pas valide !")] | |||||
public void TestInvalidSolutionPathError03() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(@"C:/abc*d.txt", "",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(ExtensionSolutionPathException), "Le chemin de la solution passé en premier paramètre n'existe pas !")] | |||||
public void ExtensionSolutionPathError04() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(@"C:/toto.txt", "",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(SolutionPathIsNotAFileException), "Le chemin de la solution passé en premier paramètre n'existe pas !")] | |||||
public void SolutionPathIsNotAFileError05() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(@"C:/toto.sln", "",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(DirectoryDestinationIsNullException), "Le chemin de destination passé en second paramètre ne doit pas être null !")] | |||||
public void DirectoryDestinationIsNullError06() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), null,""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(DirectoryDestinationIsEmptyException), "Le chemin de destination passé en second paramètre ne doit pas être vide !")] | |||||
public void DirectoryDestinationIsEmptyError07() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), " ",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(InvalideDirectoryDestinationException), "Le chemin de destination passé en second paramètre ne doit pas être vide !")] | |||||
public void InvalideDirectoryDestinationError08() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), @"C:/abc*d",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(DirectoryDestinationNotFoundException), "Le chemin de destination passé en second paramètre est un chemin inexistant !")] | |||||
public void DirectoryDestinationNotFoundError09() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), @"C:/abcd",""); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(NewSolutionIsNullException), "La nouvelle solution passée en second paramètre est null !")] | |||||
public void NewSolutionIsNullError10() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),null); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(NewSolutionIsEmptyException), "La nouvelle solution passée en second paramètre est vide !")] | |||||
public void NewSolutionIsEmptyError11() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), " "); | |||||
} | |||||
[TestMethod] | |||||
[ExpectedException(typeof(ExtensionNewSolutionException), "La nouvelle solution passée en second paramètre n'as pas l'extension sln!")] | |||||
public void ExtensionNewSolutioError12() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "toto.sn"); | |||||
} | |||||
[TestMethod] | |||||
public void TestSolutionNominal01() | |||||
{ | |||||
_solutionService.CreateProjectTemplatesFromSolution(Path.Combine(dirTest, "WebApplication1", "WebApplication1.sln"), Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Test.sln"); | |||||
} | |||||
} | |||||
} |
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<runtime> | |||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> | |||||
</dependentAssembly> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" /> | |||||
</dependentAssembly> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> | |||||
</dependentAssembly> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Threading.Tasks.Dataflow" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> | |||||
</dependentAssembly> | |||||
</assemblyBinding> | |||||
</runtime> | |||||
</configuration> |
<?xml version="1.0" encoding="utf-8"?> | |||||
<packages> | |||||
<package id="MSTest.TestAdapter" version="2.1.2" targetFramework="net48" /> | |||||
<package id="MSTest.TestFramework" version="2.1.2" targetFramework="net48" /> | |||||
</packages> |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.DirectoryDestination | |||||
{ | |||||
public class DirectoryDestinationIsEmptyException:Exception | |||||
{ | |||||
public DirectoryDestinationIsEmptyException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public DirectoryDestinationIsEmptyException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.DirectoryDestination | |||||
{ | |||||
public class DirectoryDestinationIsNullException:Exception | |||||
{ | |||||
public DirectoryDestinationIsNullException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public DirectoryDestinationIsNullException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.DirectoryDestination | |||||
{ | |||||
public class DirectoryDestinationNotFoundException : Exception | |||||
{ | |||||
public DirectoryDestinationNotFoundException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public DirectoryDestinationNotFoundException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
namespace SIE.VSDK.Exceptions.DirectoryDestination | |||||
{ | |||||
public class InvalideDirectoryDestinationException:Exception | |||||
{ | |||||
public InvalideDirectoryDestinationException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public InvalideDirectoryDestinationException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class ExtensionNewSolutionException:Exception | |||||
{ | |||||
public ExtensionNewSolutionException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public ExtensionNewSolutionException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class ExtensionSolutionPathException:Exception | |||||
{ | |||||
public ExtensionSolutionPathException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public ExtensionSolutionPathException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class InvalidSolutionPathException:Exception | |||||
{ | |||||
public InvalidSolutionPathException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public InvalidSolutionPathException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class NewSolutionIsEmptyException: Exception | |||||
{ | |||||
public NewSolutionIsEmptyException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public NewSolutionIsEmptyException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class NewSolutionIsNullException:Exception | |||||
{ | |||||
public NewSolutionIsNullException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public NewSolutionIsNullException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class SolutionPathIsEmptyException: Exception | |||||
{ | |||||
public SolutionPathIsEmptyException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public SolutionPathIsEmptyException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class SolutionPathIsNotAFileException :Exception | |||||
{ | |||||
public SolutionPathIsNotAFileException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public SolutionPathIsNotAFileException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class SolutionPathIsNullException:Exception | |||||
{ | |||||
public SolutionPathIsNullException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public SolutionPathIsNullException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Exceptions.Solution | |||||
{ | |||||
public class SolutionPathNotFoundException : Exception | |||||
{ | |||||
public SolutionPathNotFoundException(string message) | |||||
: base(message) | |||||
{ | |||||
} | |||||
public SolutionPathNotFoundException(string message, Exception inner) | |||||
: base(message, inner) | |||||
{ | |||||
} | |||||
} | |||||
} |
using Microsoft.Build.Evaluation; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.IO; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace SIE.VSDK.Extensions | |||||
{ | |||||
public static class DirectoryInfoExtensions | |||||
{ | |||||
public static void DeepCopy(this DirectoryInfo directory, string destinationDir) | |||||
{ | |||||
foreach (string dir in Directory.GetDirectories(directory.FullName, "*", SearchOption.AllDirectories)) | |||||
{ | |||||
string dirToCreate = dir.Replace(directory.FullName, destinationDir); | |||||
Directory.CreateDirectory(dirToCreate); | |||||
} | |||||
foreach (string newPath in Directory.GetFiles(directory.FullName, "*.*", SearchOption.AllDirectories)) | |||||
{ | |||||
File.Copy(newPath, newPath.Replace(directory.FullName, destinationDir), true); | |||||
} | |||||
} | |||||
public static List<string> GetCsProjFiles(this DirectoryInfo directory) | |||||
{ | |||||
List<string> listCsProj = new List<string>(); | |||||
foreach (string newPath in Directory.GetFiles(directory.FullName, "*.csproj", SearchOption.AllDirectories)) | |||||
{ | |||||
ProjectCollection pc = new ProjectCollection(); | |||||
Project project = pc.LoadProject(newPath, null); | |||||
var properties = project.Properties; | |||||
foreach (var property in properties) | |||||
{ | |||||
string result = $"Property: \"{property.Name}\" Value: {property.UnevaluatedValue}"; | |||||
} | |||||
listCsProj.Add(newPath); | |||||
} | |||||
return listCsProj; | |||||
} | |||||
} | |||||
} |
using System.Reflection; | |||||
using System.Runtime.CompilerServices; | |||||
using System.Runtime.InteropServices; | |||||
// Les informations générales relatives à un assembly dépendent de | |||||
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations | |||||
// associées à un assembly. | |||||
[assembly: AssemblyTitle("SIE.VSDK")] | |||||
[assembly: AssemblyDescription("")] | |||||
[assembly: AssemblyConfiguration("")] | |||||
[assembly: AssemblyCompany("")] | |||||
[assembly: AssemblyProduct("SIE.VSDK")] | |||||
[assembly: AssemblyCopyright("Copyright © 2022")] | |||||
[assembly: AssemblyTrademark("")] | |||||
[assembly: AssemblyCulture("")] | |||||
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly | |||||
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de | |||||
// COM, affectez la valeur true à l'attribut ComVisible sur ce type. | |||||
[assembly: ComVisible(false)] | |||||
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM | |||||
[assembly: Guid("4bf7e556-d8fa-46ef-9655-13077e8d1ba6")] | |||||
// Les informations de version pour un assembly se composent des quatre valeurs suivantes : | |||||
// | |||||
// Version principale | |||||
// Version secondaire | |||||
// Numéro de build | |||||
// Révision | |||||
// | |||||
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut | |||||
// en utilisant '*', comme indiqué ci-dessous : | |||||
// [assembly: AssemblyVersion("1.0.*")] | |||||
[assembly: AssemblyVersion("1.0.0.0")] | |||||
[assembly: AssemblyFileVersion("1.0.0.0")] |
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||||
<PropertyGroup> | |||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||||
<ProjectGuid>{4BF7E556-D8FA-46EF-9655-13077E8D1BA6}</ProjectGuid> | |||||
<OutputType>Library</OutputType> | |||||
<AppDesignerFolder>Properties</AppDesignerFolder> | |||||
<RootNamespace>SIE.VSDK</RootNamespace> | |||||
<AssemblyName>SIE.VSDK</AssemblyName> | |||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | |||||
<FileAlignment>512</FileAlignment> | |||||
<Deterministic>true</Deterministic> | |||||
<NuGetPackageImportStamp> | |||||
</NuGetPackageImportStamp> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||||
<DebugSymbols>true</DebugSymbols> | |||||
<DebugType>full</DebugType> | |||||
<Optimize>false</Optimize> | |||||
<OutputPath>bin\Debug\</OutputPath> | |||||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||||
<DebugType>pdbonly</DebugType> | |||||
<Optimize>true</Optimize> | |||||
<OutputPath>bin\Release\</OutputPath> | |||||
<DefineConstants>TRACE</DefineConstants> | |||||
<ErrorReport>prompt</ErrorReport> | |||||
<WarningLevel>4</WarningLevel> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\Microsoft.Build.15.1.1012\lib\net46\Microsoft.Build.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\Microsoft.Build.Framework.15.1.1012\lib\net46\Microsoft.Build.Framework.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\Microsoft.Build.Utilities.Core.15.1.1012\lib\net46\Microsoft.Build.Utilities.Core.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Microsoft.IO.Redist, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\Microsoft.IO.Redist.6.0.0\lib\net472\Microsoft.IO.Redist.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="Microsoft.NET.StringTools, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\Microsoft.NET.StringTools.17.3.1\lib\net472\Microsoft.NET.StringTools.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System" /> | |||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Collections.Immutable, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Collections.Immutable.6.0.0\lib\net461\System.Collections.Immutable.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.ComponentModel.Composition" /> | |||||
<Reference Include="System.Configuration" /> | |||||
<Reference Include="System.Configuration.ConfigurationManager, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Configuration.ConfigurationManager.6.0.0\lib\net461\System.Configuration.ConfigurationManager.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Core" /> | |||||
<Reference Include="System.Data.OracleClient" /> | |||||
<Reference Include="System.IO.Compression" /> | |||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Net" /> | |||||
<Reference Include="System.Numerics" /> | |||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Reflection.Metadata, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Reflection.Metadata.6.0.0\lib\net461\System.Reflection.Metadata.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Reflection.MetadataLoadContext, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Reflection.MetadataLoadContext.6.0.0\lib\net461\System.Reflection.MetadataLoadContext.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Runtime.4.1.0\lib\net462\System.Runtime.dll</HintPath> | |||||
<Private>True</Private> | |||||
<Private>True</Private> | |||||
</Reference> | |||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Runtime.InteropServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Runtime.InteropServices.4.1.0\lib\net462\System.Runtime.InteropServices.dll</HintPath> | |||||
<Private>True</Private> | |||||
<Private>True</Private> | |||||
</Reference> | |||||
<Reference Include="System.Security" /> | |||||
<Reference Include="System.Security.AccessControl, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Security.Permissions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Security.Permissions.6.0.0\lib\net461\System.Security.Permissions.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.ServiceProcess" /> | |||||
<Reference Include="System.Text.Encodings.Web, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Text.Encodings.Web.6.0.0\lib\net461\System.Text.Encodings.Web.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Text.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Text.Json.6.0.0\lib\net461\System.Text.Json.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Threading.Tasks.Dataflow, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Threading.Tasks.Dataflow.6.0.0\lib\net461\System.Threading.Tasks.Dataflow.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Threading.Thread, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.Threading.Thread.4.0.0\lib\net46\System.Threading.Thread.dll</HintPath> | |||||
<Private>True</Private> | |||||
<Private>True</Private> | |||||
</Reference> | |||||
<Reference Include="System.Transactions" /> | |||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> | |||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath> | |||||
</Reference> | |||||
<Reference Include="System.Xaml" /> | |||||
<Reference Include="System.Xml.Linq" /> | |||||
<Reference Include="System.Data.DataSetExtensions" /> | |||||
<Reference Include="Microsoft.CSharp" /> | |||||
<Reference Include="System.Data" /> | |||||
<Reference Include="System.Net.Http" /> | |||||
<Reference Include="System.Xml" /> | |||||
<Reference Include="WindowsBase" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<Compile Include="Exceptions\DirectoryDestination\DirectoryDestinationIsEmptyException.cs" /> | |||||
<Compile Include="Exceptions\DirectoryDestination\InvalideDirectoryDestinationException.cs" /> | |||||
<Compile Include="Exceptions\DirectoryDestination\DirectoryDestinationIsNullException.cs" /> | |||||
<Compile Include="Exceptions\DirectoryDestination\DirectoryDestinationNotFoundException.cs" /> | |||||
<Compile Include="Exceptions\Solution\ExtensionSolutionPathException.cs" /> | |||||
<Compile Include="Exceptions\Solution\ExtensionNewSolutionException.cs" /> | |||||
<Compile Include="Exceptions\Solution\InvalidSolutionPathException.cs" /> | |||||
<Compile Include="Exceptions\Solution\NewSolutionIsEmptyException.cs" /> | |||||
<Compile Include="Exceptions\Solution\NewSolutionIsNullException.cs" /> | |||||
<Compile Include="Exceptions\Solution\SolutionPathIsNotAFileException.cs" /> | |||||
<Compile Include="Exceptions\Solution\SolutionPathIsNullException.cs" /> | |||||
<Compile Include="Exceptions\Solution\SolutionPathNotFoundException.cs" /> | |||||
<Compile Include="Exceptions\Solution\SolutionPathIsEmptyException.cs" /> | |||||
<Compile Include="Extensions\DirectoryInfoExtensions.cs" /> | |||||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||||
<Compile Include="Services\PathService.cs" /> | |||||
<Compile Include="Services\SolutionService.cs" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ProjectReference Include="..\SIE.IVSDK\SIE.IVSDK.csproj"> | |||||
<Project>{28110bdb-998e-42d3-9732-f5cb7740f6b9}</Project> | |||||
<Name>SIE.IVSDK</Name> | |||||
</ProjectReference> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<None Include="app.config" /> | |||||
<None Include="packages.config" /> | |||||
</ItemGroup> | |||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||||
<Import Project="..\packages\System.Text.Json.6.0.0\build\System.Text.Json.targets" Condition="Exists('..\packages\System.Text.Json.6.0.0\build\System.Text.Json.targets')" /> | |||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> | |||||
<PropertyGroup> | |||||
<ErrorText>Ce projet fait référence à des packages NuGet qui sont manquants sur cet ordinateur. Utilisez l'option de restauration des packages NuGet pour les télécharger. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkID=322105. Le fichier manquant est : {0}.</ErrorText> | |||||
</PropertyGroup> | |||||
<Error Condition="!Exists('..\packages\System.Text.Json.6.0.0\build\System.Text.Json.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Text.Json.6.0.0\build\System.Text.Json.targets'))" /> | |||||
</Target> | |||||
</Project> |
using SIE.IVSDK.Services; | |||||
using System; | |||||
using System.IO; | |||||
using System.Text.RegularExpressions; | |||||
namespace SIE.VSDK.Services | |||||
{ | |||||
public class PathService : IPathService | |||||
{ | |||||
public bool IsValidPath(string path, bool allowRelativePaths = false) | |||||
{ | |||||
bool isValid = true; | |||||
try | |||||
{ | |||||
string fullPath = Path.GetFullPath(path); | |||||
if (allowRelativePaths) | |||||
{ | |||||
isValid = Path.IsPathRooted(path); | |||||
} | |||||
else | |||||
{ | |||||
string root = Path.GetPathRoot(path); | |||||
isValid = string.IsNullOrEmpty(root.Trim(new char[] { '\\', '/' })) == false; | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
isValid = false; | |||||
} | |||||
return isValid; | |||||
} | |||||
} | |||||
} |
using SIE.IVSDK.Services; | |||||
using SIE.VSDK.Exceptions.DirectoryDestination; | |||||
using SIE.VSDK.Exceptions.Solution; | |||||
using SIE.VSDK.Extensions; | |||||
using System.Collections.Generic; | |||||
using System.IO; | |||||
namespace SIE.VSDK.Services | |||||
{ | |||||
public class SolutionService : ISolutionService | |||||
{ | |||||
private readonly IPathService _pathService; | |||||
public SolutionService(IPathService pathService) | |||||
{ | |||||
_pathService = pathService; | |||||
} | |||||
public void CreateProjectTemplatesFromSolution(string solutionPath, string directoryDestinationPath, string newSolutionName) | |||||
{ | |||||
if(solutionPath==null) | |||||
{ | |||||
throw new SolutionPathIsNullException($"Le chemin de la solution {Path.GetFileName(solutionPath)} ne doit pas être null !"); | |||||
} | |||||
if(solutionPath.Trim() == string.Empty) | |||||
{ | |||||
throw new SolutionPathIsEmptyException($"Le chemin de la solution {Path.GetFileName(solutionPath)} ne doit pas être vide !"); | |||||
} | |||||
if (!_pathService.IsValidPath(solutionPath)) | |||||
{ | |||||
throw new InvalidSolutionPathException($"Le chemin de la solution {Path.GetFileName(solutionPath)} n'est pas valide !"); | |||||
} | |||||
if (Path.GetExtension(solutionPath) != ".sln") | |||||
{ | |||||
throw new ExtensionSolutionPathException($"Le chemin de la solution {Path.GetFileName(solutionPath)} doit être d'extension .sln !"); | |||||
} | |||||
if (!File.Exists(solutionPath)) | |||||
{ | |||||
throw new SolutionPathIsNotAFileException($"Le chemin de la solution {Path.GetFileName(solutionPath)} doit être un fichier existant!"); | |||||
} | |||||
if(directoryDestinationPath ==null) | |||||
{ | |||||
throw new DirectoryDestinationIsNullException($"Le chemin de destination {directoryDestinationPath} ne doit pas être null !"); | |||||
} | |||||
if(directoryDestinationPath.Trim()==string.Empty) | |||||
{ | |||||
throw new DirectoryDestinationIsEmptyException($"Le chemin de destination {directoryDestinationPath} ne doit pas être vide !"); | |||||
} | |||||
if(!_pathService.IsValidPath(directoryDestinationPath)) | |||||
{ | |||||
throw new InvalideDirectoryDestinationException($"Le chemin de destination {directoryDestinationPath} n'est pas valide !"); | |||||
} | |||||
if(!Directory.Exists(directoryDestinationPath)) | |||||
{ | |||||
throw new DirectoryDestinationNotFoundException($"Le dossier de destination {directoryDestinationPath} n'existe pas!"); | |||||
} | |||||
if (newSolutionName == null) | |||||
{ | |||||
throw new NewSolutionIsNullException("Le nom de la nouvelle solution est null"); | |||||
} | |||||
if (newSolutionName.Trim() == string.Empty) | |||||
{ | |||||
throw new NewSolutionIsEmptyException("Le nom de la nouvelle solution est vide"); | |||||
} | |||||
if (Path.GetExtension(newSolutionName) != ".sln") | |||||
{ | |||||
throw new ExtensionNewSolutionException($"Le nom de la nouvelle solution {newSolutionName} doit être de type .sln !"); | |||||
} | |||||
string VSDK_ECOLOCALE_directory = Path.Combine(directoryDestinationPath, "VSDK_ECOLOCALE"); | |||||
if (!Directory.Exists(VSDK_ECOLOCALE_directory)) | |||||
{ | |||||
Directory.CreateDirectory(VSDK_ECOLOCALE_directory); | |||||
} | |||||
string TMP_TEMPLATE_directory = Path.Combine(VSDK_ECOLOCALE_directory, "TMP_TEMPLATE"); | |||||
if (!Directory.Exists(TMP_TEMPLATE_directory)) | |||||
{ | |||||
Directory.CreateDirectory(TMP_TEMPLATE_directory); | |||||
} | |||||
string TMP_SLN_directory = Path.Combine(TMP_TEMPLATE_directory, Path.GetFileNameWithoutExtension(newSolutionName)); | |||||
if (!Directory.Exists(TMP_SLN_directory)) | |||||
{ | |||||
Directory.CreateDirectory(TMP_SLN_directory); | |||||
} | |||||
DirectoryInfo sourceDir = new DirectoryInfo(Path.GetDirectoryName(solutionPath)); | |||||
sourceDir.DeepCopy(TMP_SLN_directory); | |||||
string oldName = Path.Combine(TMP_SLN_directory, Path.GetFileName(solutionPath)); | |||||
File.Delete(oldName); | |||||
sourceDir = new DirectoryInfo(Path.GetDirectoryName(TMP_SLN_directory)); | |||||
List<string> csProjFiles = sourceDir.GetCsProjFiles(); | |||||
} | |||||
} | |||||
} |
<?xml version="1.0" encoding="utf-8"?> | |||||
<configuration> | |||||
<runtime> | |||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> | |||||
</dependentAssembly> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" /> | |||||
</dependentAssembly> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> | |||||
</dependentAssembly> | |||||
<dependentAssembly> | |||||
<assemblyIdentity name="System.Threading.Tasks.Dataflow" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> | |||||
</dependentAssembly> | |||||
</assemblyBinding> | |||||
</runtime> | |||||
</configuration> |
<?xml version="1.0" encoding="utf-8"?> | |||||
<packages> | |||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net48" /> | |||||
<package id="Microsoft.Build" version="15.1.1012" targetFramework="net48" /> | |||||
<package id="Microsoft.Build.Framework" version="15.1.1012" targetFramework="net48" /> | |||||
<package id="Microsoft.Build.Utilities.Core" version="15.1.1012" targetFramework="net48" /> | |||||
<package id="Microsoft.IO.Redist" version="6.0.0" targetFramework="net48" /> | |||||
<package id="Microsoft.NET.StringTools" version="17.3.1" targetFramework="net48" /> | |||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" /> | |||||
<package id="System.Collections" version="4.0.11" targetFramework="net48" /> | |||||
<package id="System.Collections.Immutable" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Configuration.ConfigurationManager" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net48" /> | |||||
<package id="System.Globalization" version="4.0.11" targetFramework="net48" /> | |||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" /> | |||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" /> | |||||
<package id="System.Reflection.Metadata" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Reflection.MetadataLoadContext" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Runtime" version="4.1.0" targetFramework="net48" /> | |||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Runtime.InteropServices" version="4.1.0" targetFramework="net48" /> | |||||
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Security.Permissions" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" /> | |||||
<package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Text.Json" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Threading" version="4.0.11" targetFramework="net48" /> | |||||
<package id="System.Threading.Tasks.Dataflow" version="6.0.0" targetFramework="net48" /> | |||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" /> | |||||
<package id="System.Threading.Thread" version="4.0.0" targetFramework="net48" /> | |||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net48" /> | |||||
</packages> |
| |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio Version 16 | |||||
VisualStudioVersion = 16.0.32901.82 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApplication1", "WebApplication1\WebApplication1.csproj", "{026EBCAC-E688-48C9-BF66-8CB6ED08CEB9}" | |||||
EndProject | |||||
Global | |||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
Debug|Any CPU = Debug|Any CPU | |||||
Release|Any CPU = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
{026EBCAC-E688-48C9-BF66-8CB6ED08CEB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{026EBCAC-E688-48C9-BF66-8CB6ED08CEB9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{026EBCAC-E688-48C9-BF66-8CB6ED08CEB9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{026EBCAC-E688-48C9-BF66-8CB6ED08CEB9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(SolutionProperties) = preSolution | |||||
HideSolutionNode = FALSE | |||||
EndGlobalSection | |||||
GlobalSection(ExtensibilityGlobals) = postSolution | |||||
SolutionGuid = {04D889E7-D132-4513-ACE0-16E5C4CF0CA1} | |||||
EndGlobalSection | |||||
EndGlobal |
using Microsoft.AspNetCore.Mvc; | |||||
using Microsoft.Extensions.Logging; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Threading.Tasks; | |||||
namespace WebApplication1.Controllers | |||||
{ | |||||
[ApiController] | |||||
[Route("[controller]")] | |||||
public class WeatherForecastController : ControllerBase | |||||
{ | |||||
private static readonly string[] Summaries = new[] | |||||
{ | |||||
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" | |||||
}; | |||||
private readonly ILogger<WeatherForecastController> _logger; | |||||
public WeatherForecastController(ILogger<WeatherForecastController> logger) | |||||
{ | |||||
_logger = logger; | |||||
} | |||||
[HttpGet] | |||||
public IEnumerable<WeatherForecast> Get() | |||||
{ | |||||
var rng = new Random(); | |||||
return Enumerable.Range(1, 5).Select(index => new WeatherForecast | |||||
{ | |||||
Date = DateTime.Now.AddDays(index), | |||||
TemperatureC = rng.Next(-20, 55), | |||||
Summary = Summaries[rng.Next(Summaries.Length)] | |||||
}) | |||||
.ToArray(); | |||||
} | |||||
} | |||||
} |
using Microsoft.AspNetCore.Hosting; | |||||
using Microsoft.Extensions.Configuration; | |||||
using Microsoft.Extensions.Hosting; | |||||
using Microsoft.Extensions.Logging; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Threading.Tasks; | |||||
namespace WebApplication1 | |||||
{ | |||||
public class Program | |||||
{ | |||||
public static void Main(string[] args) | |||||
{ | |||||
CreateHostBuilder(args).Build().Run(); | |||||
} | |||||
public static IHostBuilder CreateHostBuilder(string[] args) => | |||||
Host.CreateDefaultBuilder(args) | |||||
.ConfigureWebHostDefaults(webBuilder => | |||||
{ | |||||
webBuilder.UseStartup<Startup>(); | |||||
}); | |||||
} | |||||
} |
{ | |||||
"$schema": "http://json.schemastore.org/launchsettings.json", | |||||
"iisSettings": { | |||||
"windowsAuthentication": false, | |||||
"anonymousAuthentication": true, | |||||
"iisExpress": { | |||||
"applicationUrl": "http://localhost:40762", | |||||
"sslPort": 44360 | |||||
} | |||||
}, | |||||
"profiles": { | |||||
"IIS Express": { | |||||
"commandName": "IISExpress", | |||||
"launchBrowser": true, | |||||
"launchUrl": "swagger", | |||||
"environmentVariables": { | |||||
"ASPNETCORE_ENVIRONMENT": "Development" | |||||
} | |||||
}, | |||||
"WebApplication1": { | |||||
"commandName": "Project", | |||||
"dotnetRunMessages": "true", | |||||
"launchBrowser": true, | |||||
"launchUrl": "swagger", | |||||
"applicationUrl": "https://localhost:5001;http://localhost:5000", | |||||
"environmentVariables": { | |||||
"ASPNETCORE_ENVIRONMENT": "Development" | |||||
} | |||||
} | |||||
} | |||||
} |
using Microsoft.AspNetCore.Builder; | |||||
using Microsoft.AspNetCore.Hosting; | |||||
using Microsoft.AspNetCore.HttpsPolicy; | |||||
using Microsoft.AspNetCore.Mvc; | |||||
using Microsoft.Extensions.Configuration; | |||||
using Microsoft.Extensions.DependencyInjection; | |||||
using Microsoft.Extensions.Hosting; | |||||
using Microsoft.Extensions.Logging; | |||||
using Microsoft.OpenApi.Models; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Threading.Tasks; | |||||
namespace WebApplication1 | |||||
{ | |||||
public class Startup | |||||
{ | |||||
public Startup(IConfiguration configuration) | |||||
{ | |||||
Configuration = configuration; | |||||
} | |||||
public IConfiguration Configuration { get; } | |||||
// This method gets called by the runtime. Use this method to add services to the container. | |||||
public void ConfigureServices(IServiceCollection services) | |||||
{ | |||||
services.AddControllers(); | |||||
services.AddSwaggerGen(c => | |||||
{ | |||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication1", Version = "v1" }); | |||||
}); | |||||
} | |||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. | |||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) | |||||
{ | |||||
if (env.IsDevelopment()) | |||||
{ | |||||
app.UseDeveloperExceptionPage(); | |||||
app.UseSwagger(); | |||||
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApplication1 v1")); | |||||
} | |||||
app.UseHttpsRedirection(); | |||||
app.UseRouting(); | |||||
app.UseAuthorization(); | |||||
app.UseEndpoints(endpoints => | |||||
{ | |||||
endpoints.MapControllers(); | |||||
}); | |||||
} | |||||
} | |||||
} |
using System; | |||||
namespace WebApplication1 | |||||
{ | |||||
public class WeatherForecast | |||||
{ | |||||
public DateTime Date { get; set; } | |||||
public int TemperatureC { get; set; } | |||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); | |||||
public string Summary { get; set; } | |||||
} | |||||
} |
<Project Sdk="Microsoft.NET.Sdk.Web"> | |||||
<PropertyGroup> | |||||
<TargetFramework>net5.0</TargetFramework> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" /> | |||||
</ItemGroup> | |||||
</Project> |
{ | |||||
"Logging": { | |||||
"LogLevel": { | |||||
"Default": "Information", | |||||
"Microsoft": "Warning", | |||||
"Microsoft.Hosting.Lifetime": "Information" | |||||
} | |||||
} | |||||
} |
{ | |||||
"Logging": { | |||||
"LogLevel": { | |||||
"Default": "Information", | |||||
"Microsoft": "Warning", | |||||
"Microsoft.Hosting.Lifetime": "Information" | |||||
} | |||||
}, | |||||
"AllowedHosts": "*" | |||||
} |