chore: reorg solution

This commit is contained in:
Matteo Cominetti
2023-03-09 18:25:14 +01:00
parent f786a0a67e
commit 7790887091
34 changed files with 1329 additions and 882 deletions
+7 -6
View File
@@ -15,6 +15,7 @@
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TargetFrameworkProfile />
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -73,16 +74,16 @@
<Compile Include="TestWithFixture.cs" />
<Compile Include="Utils.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj">
<Project>{e0bf38c2-13bc-4acc-b0f2-4dfe82965db4}</Project>
<Name>xUnitRevitUtils2023</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API">
<Version>2023.0.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2023</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-53
View File
@@ -1,53 +0,0 @@
# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
trigger:
branches:
include:
- master
- refs/tags/*
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
# - task: VSTest@2
# inputs:
# platform: '$(buildPlatform)'
# configuration: '$(buildConfiguration)'
- task: NuGetCommand@2
inputs:
command: 'pack'
packagesToPack: '**/xUnitRevitUtils*.csproj'
versioningScheme: 'off'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'artifact'
publishLocation: 'Container'
- powershell: |
If ($env:BRANCH.StartsWith('refs/tags/')) { nuget push -ApiKey $env:APIKEY -Source https://api.nuget.org/v3/index.json $(Build.ArtifactStagingDirectory)/**/*.nupkg }
env:
APIKEY: $(nuget-apikey)
BRANCH: $(Build.SourceBranch)
+219 -122
View File
@@ -3,26 +3,46 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnitRevit", "xUnitRevit\xUnitRevit.csproj", "{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2021", "xUnitRevitUtils2021\xUnitRevitUtils2021.csproj", "{977E0B63-5706-4C2B-9C01-3C02D9EBE377}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2020", "xUnitRevitUtils2020\xUnitRevitUtils2020.csproj", "{0DEF0F23-8AE2-461B-B014-8A0DA7494088}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2019", "xUnitRevitUtils2019\xUnitRevitUtils2019.csproj", "{02399359-9CA0-4B47-B467-541E290E700F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleLibrary", "SampleLibrary\SampleLibrary.csproj", "{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2023", "xUnitRevitUtils2023\xUnitRevitUtils2023.csproj", "{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2022", "xUnitRevitUtils2022\xUnitRevitUtils2022.csproj", "{78770414-4F6B-4429-BD8F-F0F64A349551}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{F5A2849D-7C58-4894-B9C5-8488E244B7CF}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
Directory.Build.props = Directory.Build.props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xUnitRevitUtils", "xUnitRevitUtils", "{EDC05463-E574-4FF0-8518-D93D70EC138C}"
ProjectSection(SolutionItems) = preProject
xUnitRevitUtils\Directory.Build.props = xUnitRevitUtils\Directory.Build.props
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2023", "xUnitRevitUtils\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj", "{637136C9-AB5D-4F00-948E-C68FAE2682D0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2022", "xUnitRevitUtils\xUnitRevitUtils2022\xUnitRevitUtils2022.csproj", "{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2021", "xUnitRevitUtils\xUnitRevitUtils2021\xUnitRevitUtils2021.csproj", "{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2020", "xUnitRevitUtils\xUnitRevitUtils2020\xUnitRevitUtils2020.csproj", "{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2019", "xUnitRevitUtils\xUnitRevitUtils2019\xUnitRevitUtils2019.csproj", "{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "speckle.xunit.runner.wpf", "speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj", "{B6404BAD-9314-45F9-9F4D-A644D986FC37}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extra", "Extra", "{B01105F5-963D-42C3-BFA7-2D26AC375D07}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xUnitRevitRunner", "xUnitRevitRunner", "{CF685C5E-70E1-40C5-BCFD-1E27695F0364}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "xUnitRevitRunnerShared", "xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.shproj", "{2B4F4767-CF26-485B-ADB3-751250EB1CDB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnitRevitRunner2023", "xUnitRevitRunner\xUnitRevitRunner2023\xUnitRevitRunner2023.csproj", "{748653C4-D89A-4DBD-B190-6F221FEC980B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnitRevitRunner2022", "xUnitRevitRunner\xUnitRevitRunner2022\xUnitRevitRunner2022.csproj", "{6C7200FA-4541-4AFD-B297-6C13E29968D5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnitRevitRunner2021", "xUnitRevitRunner\xUnitRevitRunner2021\xUnitRevitRunner2021.csproj", "{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnitRevitRunner2020", "xUnitRevitRunner\xUnitRevitRunner2020\xUnitRevitRunner2020.csproj", "{D15EC3E8-9387-4870-AA3B-A47432982B07}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnitRevitRunner2019", "xUnitRevitRunner\xUnitRevitRunner2019\xUnitRevitRunner2019.csproj", "{D11AD4C7-D302-44DC-AE02-840788391FE9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -32,126 +52,203 @@ Global
Debug2022|Any CPU = Debug2022|Any CPU
Debug2023|Any CPU = Debug2023|Any CPU
Release|Any CPU = Release|Any CPU
Release2019|Any CPU = Release2019|Any CPU
Release2020|Any CPU = Release2020|Any CPU
Release2021|Any CPU = Release2021|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug|Any CPU.ActiveCfg = Debug2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug|Any CPU.Build.0 = Debug2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2019|Any CPU.ActiveCfg = Debug2019|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2019|Any CPU.Build.0 = Debug2019|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2020|Any CPU.ActiveCfg = Debug2020|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2020|Any CPU.Build.0 = Debug2020|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2021|Any CPU.ActiveCfg = Debug2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2021|Any CPU.Build.0 = Debug2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2022|Any CPU.ActiveCfg = Debug2022|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2022|Any CPU.Build.0 = Debug2022|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2023|Any CPU.ActiveCfg = Debug2023|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Debug2023|Any CPU.Build.0 = Debug2023|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release|Any CPU.ActiveCfg = Release2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release|Any CPU.Build.0 = Release2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release2019|Any CPU.ActiveCfg = Release2019|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release2019|Any CPU.Build.0 = Release2019|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release2020|Any CPU.ActiveCfg = Release2020|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release2020|Any CPU.Build.0 = Release2020|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release2021|Any CPU.ActiveCfg = Release2021|Any CPU
{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}.Release2021|Any CPU.Build.0 = Release2021|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug|Any CPU.Build.0 = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Release|Any CPU.ActiveCfg = Release|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Release|Any CPU.Build.0 = Release|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{977E0B63-5706-4C2B-9C01-3C02D9EBE377}.Release2021|Any CPU.Build.0 = Release|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Release|Any CPU.Build.0 = Release|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Release2020|Any CPU.Build.0 = Release|Any CPU
{0DEF0F23-8AE2-461B-B014-8A0DA7494088}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Release|Any CPU.Build.0 = Release|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Release2019|Any CPU.Build.0 = Release|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{02399359-9CA0-4B47-B467-541E290E700F}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2019|Any CPU.ActiveCfg = Debug2019|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2019|Any CPU.Build.0 = Debug2019|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2020|Any CPU.ActiveCfg = Debug2020|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2020|Any CPU.Build.0 = Debug2020|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2021|Any CPU.ActiveCfg = Debug2021|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2021|Any CPU.Build.0 = Debug2021|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2022|Any CPU.ActiveCfg = Debug2022|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2022|Any CPU.Build.0 = Debug2022|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2023|Any CPU.ActiveCfg = Debug2023|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug2023|Any CPU.Build.0 = Debug2023|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release|Any CPU.Build.0 = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2019|Any CPU.Build.0 = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2020|Any CPU.Build.0 = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2021|Any CPU.Build.0 = Release|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release|Any CPU.Build.0 = Release|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Release|Any CPU.Build.0 = Release|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{78770414-4F6B-4429-BD8F-F0F64A349551}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Release|Any CPU.Build.0 = Release|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Release|Any CPU.Build.0 = Release|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Release|Any CPU.Build.0 = Release|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Release|Any CPU.Build.0 = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Release|Any CPU.Build.0 = Release|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B6404BAD-9314-45F9-9F4D-A644D986FC37}.Release|Any CPU.Build.0 = Release|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{748653C4-D89A-4DBD-B190-6F221FEC980B}.Release|Any CPU.Build.0 = Release|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C7200FA-4541-4AFD-B297-6C13E29968D5}.Release|Any CPU.Build.0 = Release|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}.Release|Any CPU.Build.0 = Release|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D15EC3E8-9387-4870-AA3B-A47432982B07}.Release|Any CPU.Build.0 = Release|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2019|Any CPU.Build.0 = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2020|Any CPU.Build.0 = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2021|Any CPU.Build.0 = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D11AD4C7-D302-44DC-AE02-840788391FE9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35} = {B01105F5-963D-42C3-BFA7-2D26AC375D07}
{637136C9-AB5D-4F00-948E-C68FAE2682D0} = {EDC05463-E574-4FF0-8518-D93D70EC138C}
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E} = {EDC05463-E574-4FF0-8518-D93D70EC138C}
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E} = {EDC05463-E574-4FF0-8518-D93D70EC138C}
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8} = {EDC05463-E574-4FF0-8518-D93D70EC138C}
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA} = {EDC05463-E574-4FF0-8518-D93D70EC138C}
{B6404BAD-9314-45F9-9F4D-A644D986FC37} = {B01105F5-963D-42C3-BFA7-2D26AC375D07}
{2B4F4767-CF26-485B-ADB3-751250EB1CDB} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{748653C4-D89A-4DBD-B190-6F221FEC980B} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{6C7200FA-4541-4AFD-B297-6C13E29968D5} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{D15EC3E8-9387-4870-AA3B-A47432982B07} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{D11AD4C7-D302-44DC-AE02-840788391FE9} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1CD726E4-6BBA-4FC3-9C57-0981EF1A9475}
EndGlobalSection
GlobalSection(SharedMSBuildProjectFiles) = preSolution
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{0ed80c57-6b55-4b7e-b5c1-7f94c80f3e34}*SharedItemsImports = 4
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{6c7200fa-4541-4afd-b297-6c13e29968d5}*SharedItemsImports = 4
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{748653c4-d89a-4dbd-b190-6f221fec980b}*SharedItemsImports = 4
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{d11ad4c7-d302-44dc-ae02-840788391fe9}*SharedItemsImports = 4
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{d15ec3e8-9387-4870-aa3b-a47432982b07}*SharedItemsImports = 4
EndGlobalSection
EndGlobal
-262
View File
@@ -1,262 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
None
</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{27A79ACA-7EA8-4406-8BB8-216578CC3AB7}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>xUnitRevit</RootNamespace>
<AssemblyName>xUnitRevit</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<!-- MULTI VERSION CONFIGURATION START -->
<!--2021-->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2021|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2021\Revit.exe</StartProgram>
<RevitVersion>2021</RevitVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2021|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2021\Revit.exe</StartProgram>
<RevitVersion>2021</RevitVersion>
</PropertyGroup>
<!--2020-->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2020|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2020\Revit.exe</StartProgram>
<RevitVersion>2020</RevitVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2020|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2020\Revit.exe</StartProgram>
<RevitVersion>2020</RevitVersion>
</PropertyGroup>
<!--2019-->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2019|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2019\Revit.exe</StartProgram>
<RevitVersion>2019</RevitVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2019|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2019\Revit.exe</StartProgram>
<RevitVersion>2019</RevitVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2022|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2022\Revit.exe</StartProgram>
<RevitVersion>2022</RevitVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2023|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<StartAction>Program</StartAction>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2023\Revit.exe</StartProgram>
<RevitVersion>2023</RevitVersion>
</PropertyGroup>
<!--END-->
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Numerics" />
<Reference Include="System.Web.Extensions" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="App.cs" />
<Compile Include="CmdAvailabilityViews.cs" />
<Compile Include="Command.cs" />
<Compile Include="Configuration.cs" />
<Compile Include="ExternalEventHandler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Runner.cs" />
</ItemGroup>
<ItemGroup>
<None Include="config_sample.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<!--
<None Include="config.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
-->
<None Include="xUnitRevit.addin" />
</ItemGroup>
<!-- SWITCH REVIT NUGETS -->
<Choose>
<When Condition="$(Configuration.Contains('2019'))">
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2019">
<Version>1.0.0</Version>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils2019\xUnitRevitUtils2019.csproj">
<Project>{02399359-9CA0-4B47-B467-541E290E700F}</Project>
<Name>xUnitRevitUtils2019</Name>
</ProjectReference>
</ItemGroup>
</When>
<When Condition="$(Configuration.Contains('2020'))">
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2020">
<Version>1.0.0</Version>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils2020\xUnitRevitUtils2020.csproj">
<Project>{0DEF0F23-8AE2-461B-B014-8A0DA7494088}</Project>
<Name>xUnitRevitUtils2020</Name>
</ProjectReference>
</ItemGroup>
</When>
<When Condition="$(Configuration.Contains('2021'))">
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2021">
<Version>4.0.0</Version>
<ExcludeAssets>runtime</ExcludeAssets>
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils2021\xUnitRevitUtils2021.csproj">
<Project>{977e0b63-5706-4c2b-9c01-3c02d9ebe377}</Project>
<Name>xUnitRevitUtils2021</Name>
</ProjectReference>
</ItemGroup>
</When>
<When Condition="$(Configuration.Contains('2022'))">
<ItemGroup>
<PackageReference Include="Speckle.Revit.API">
<Version>2022.0.2.1</Version>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils2022\xUnitRevitUtils2022.csproj">
<Project>{78770414-4F6B-4429-BD8F-F0F64A349551}</Project>
<Name>xUnitRevitUtils2022</Name>
</ProjectReference>
</ItemGroup>
</When>
<When Condition="$(Configuration.Contains('2023'))">
<ItemGroup>
<PackageReference Include="Speckle.Revit.API">
<Version>2023.0.0</Version>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj">
<Project>{E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}</Project>
<Name>xUnitRevitUtils2023</Name>
</ProjectReference>
</ItemGroup>
</When>
</Choose>
<!--END-->
<ItemGroup>
<PackageReference Include="speckle.xunit.runner.wpf">
<Version>1.0.9</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Content Include="Assets\icon.png" />
<EmbeddedResource Include="Assets\icon16.png" />
<EmbeddedResource Include="Assets\icon32.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="AfterBuild">
<CallTarget Condition="$(Configuration.Contains('Debug'))" Targets="AfterBuildDebug" />
<CallTarget Condition="$(Configuration.Contains('Release'))" Targets="AfterBuildRelease" />
</Target>
<Target Name="AfterBuildDebug">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(ProjectDir)*.addin" />
</ItemGroup>
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\$(ProjectName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<Target Name="AfterBuildRelease">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(ProjectDir)*.addin" />
</ItemGroup>
<Message Importance="High" Text="RELEASE copy from $(TargetDir) to $(SolutionDir)\Release\Release$(RevitVersion)\$(ProjectName)\" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\$(ProjectName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<!--END-->
</Project>
@@ -1,15 +1,16 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("xUnitRevit")]
[assembly: AssemblyDescription("xUnit runner for Revit")]
[assembly: AssemblyTitle("xUnitRevitRunner")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Speckle")]
[assembly: AssemblyProduct("xUnitRevit")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("xUnitRevitRunner")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -19,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("321044f7-b0b2-4b1c-af18-e71a19252be0")]
[assembly: Guid("748653c4-d89a-4dbd-b190-6f221fec980b")]
// Version information for an assembly consists of the following four values:
//
@@ -31,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,94 @@
<?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>{D11AD4C7-D302-44DC-AE02-840788391FE9}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>xUnitRevitRunner</RootNamespace>
<AssemblyName>xUnitRevitRunner</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<LangVersion>8.0</LangVersion>
<RevitVersion>2023</RevitVersion>
</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>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2023\Revit.exe</StartProgram>
</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="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<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="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj">
<Project>{b6404bad-9314-45f9-9f4d-a644d986fc37}</Project>
<Name>speckle.xunit.runner.wpf</Name>
</ProjectReference>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2023</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2019">
<Version>4.0.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="..\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="AfterBuild">
<CallTarget Condition="$(Configuration.Contains('Debug'))" Targets="AfterBuildDebug" />
<CallTarget Condition="$(Configuration.Contains('Release'))" Targets="AfterBuildRelease" />
</Target>
<Target Name="AfterBuildDebug">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
<Message Importance="High" Text="COPY @(SourceManifest)" />
</Target>
<Target Name="AfterBuildRelease">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Message Importance="High" Text="RELEASE copy from $(TargetDir) to $(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<!--END-->
</Project>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("xUnitRevitRunner")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("xUnitRevitRunner")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("748653c4-d89a-4dbd-b190-6f221fec980b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,94 @@
<?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>{D15EC3E8-9387-4870-AA3B-A47432982B07}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>xUnitRevitRunner</RootNamespace>
<AssemblyName>xUnitRevitRunner</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<LangVersion>8.0</LangVersion>
<RevitVersion>2020</RevitVersion>
</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>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2020\Revit.exe</StartProgram>
</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="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<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="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj">
<Project>{b6404bad-9314-45f9-9f4d-a644d986fc37}</Project>
<Name>speckle.xunit.runner.wpf</Name>
</ProjectReference>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2020\xUnitRevitUtils2020.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2020</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2020">
<Version>4.0.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="..\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="AfterBuild">
<CallTarget Condition="$(Configuration.Contains('Debug'))" Targets="AfterBuildDebug" />
<CallTarget Condition="$(Configuration.Contains('Release'))" Targets="AfterBuildRelease" />
</Target>
<Target Name="AfterBuildDebug">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
<Message Importance="High" Text="COPY @(SourceManifest)" />
</Target>
<Target Name="AfterBuildRelease">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Message Importance="High" Text="RELEASE copy from $(TargetDir) to $(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<!--END-->
</Project>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("xUnitRevitRunner")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("xUnitRevitRunner")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("748653c4-d89a-4dbd-b190-6f221fec980b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,94 @@
<?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>{0ED80C57-6B55-4B7E-B5C1-7F94C80F3E34}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>xUnitRevitRunner</RootNamespace>
<AssemblyName>xUnitRevitRunner</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<LangVersion>8.0</LangVersion>
<RevitVersion>2021</RevitVersion>
</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>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2021\Revit.exe</StartProgram>
</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="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<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="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj">
<Project>{b6404bad-9314-45f9-9f4d-a644d986fc37}</Project>
<Name>speckle.xunit.runner.wpf</Name>
</ProjectReference>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2021\xUnitRevitUtils2021.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2021</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2021">
<Version>4.0.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="..\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="AfterBuild">
<CallTarget Condition="$(Configuration.Contains('Debug'))" Targets="AfterBuildDebug" />
<CallTarget Condition="$(Configuration.Contains('Release'))" Targets="AfterBuildRelease" />
</Target>
<Target Name="AfterBuildDebug">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
<Message Importance="High" Text="COPY @(SourceManifest)" />
</Target>
<Target Name="AfterBuildRelease">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Message Importance="High" Text="RELEASE copy from $(TargetDir) to $(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<!--END-->
</Project>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("xUnitRevitRunner")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("xUnitRevitRunner")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("748653c4-d89a-4dbd-b190-6f221fec980b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,94 @@
<?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>{6C7200FA-4541-4AFD-B297-6C13E29968D5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>xUnitRevitRunner</RootNamespace>
<AssemblyName>xUnitRevitRunner</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<LangVersion>8.0</LangVersion>
<RevitVersion>2022</RevitVersion>
</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>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2022\Revit.exe</StartProgram>
</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="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<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="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj">
<Project>{b6404bad-9314-45f9-9f4d-a644d986fc37}</Project>
<Name>speckle.xunit.runner.wpf</Name>
</ProjectReference>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2022\xUnitRevitUtils2022.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2022</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API">
<Version>2022.0.2.1</Version>
</PackageReference>
</ItemGroup>
<Import Project="..\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="AfterBuild">
<CallTarget Condition="$(Configuration.Contains('Debug'))" Targets="AfterBuildDebug" />
<CallTarget Condition="$(Configuration.Contains('Release'))" Targets="AfterBuildRelease" />
</Target>
<Target Name="AfterBuildDebug">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
<Message Importance="High" Text="COPY @(SourceManifest)" />
</Target>
<Target Name="AfterBuildRelease">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Message Importance="High" Text="RELEASE copy from $(TargetDir) to $(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<!--END-->
</Project>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("xUnitRevitRunner")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("xUnitRevitRunner")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("748653c4-d89a-4dbd-b190-6f221fec980b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,94 @@
<?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>{748653C4-D89A-4DBD-B190-6F221FEC980B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>xUnitRevitRunner</RootNamespace>
<AssemblyName>xUnitRevitRunner</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<LangVersion>8.0</LangVersion>
<RevitVersion>2023</RevitVersion>
</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>
<StartProgram>$(ProgramW6432)\Autodesk\Revit 2023\Revit.exe</StartProgram>
</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="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<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="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj">
<Project>{b6404bad-9314-45f9-9f4d-a644d986fc37}</Project>
<Name>speckle.xunit.runner.wpf</Name>
</ProjectReference>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2023</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API">
<Version>2023.0.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="..\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="AfterBuild">
<CallTarget Condition="$(Configuration.Contains('Debug'))" Targets="AfterBuildDebug" />
<CallTarget Condition="$(Configuration.Contains('Release'))" Targets="AfterBuildRelease" />
</Target>
<Target Name="AfterBuildDebug">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(AppData)\Autodesk\REVIT\Addins\$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
<Message Importance="High" Text="COPY @(SourceManifest)" />
</Target>
<Target Name="AfterBuildRelease">
<ItemGroup>
<SourceDLLs Include="$(TargetDir)\**\*.*" />
<SourceManifest Include="$(TargetDir)*.addin" />
</ItemGroup>
<Message Importance="High" Text="RELEASE copy from $(TargetDir) to $(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\$(TargetName)\%(RecursiveDir)" SourceFiles="@(SourceDLLs)" />
<Copy DestinationFolder="$(SolutionDir)\Release\Release$(RevitVersion)\" SourceFiles="@(SourceManifest)" />
</Target>
<!--END-->
</Project>
@@ -1,68 +1,68 @@
#region Namespaces
using System.IO;
using System.Reflection;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.UI;
#endregion
namespace xUnitRevit
{
class App : IExternalApplication
{
public Result OnStartup(UIControlledApplication a)
{
a.ControlledApplication.ApplicationInitialized += ControlledApplication_ApplicationInitialized;
string path = typeof(App).Assembly.Location;
RibbonPanel ribbonPanel = a.CreateRibbonPanel("xUnitRevit by Speckle");
var xUnitRevitButton = ribbonPanel.AddItem(new PushButtonData("Test Runner", "Test Runner", typeof(App).Assembly.Location, typeof(Command).FullName)) as PushButton;
if (xUnitRevitButton != null)
{
xUnitRevitButton.Image = LoadPngImgSource("xUnitRevit.Assets.icon16.png", path);
xUnitRevitButton.LargeImage = LoadPngImgSource("xUnitRevit.Assets.icon32.png", path);
xUnitRevitButton.ToolTipImage = LoadPngImgSource("xUnitRevit.Assets.icon32.png", path);
xUnitRevitButton.ToolTip = "xUnit Test runner for Revit";
xUnitRevitButton.AvailabilityClassName = typeof(CmdAvailabilityViews).FullName;
xUnitRevitButton.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems"));
}
return Result.Succeeded;
}
private void ControlledApplication_ApplicationInitialized(object sender, Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e)
{
var app = sender as Application;
using var uiapp = new UIApplication(app);
Runner.ReadConfig();
if (Runner.Config.AutoStart)
Runner.Launch(uiapp);
}
public Result OnShutdown(UIControlledApplication a)
{
return Result.Succeeded;
}
private ImageSource LoadPngImgSource(string sourceName, string path)
{
try
{
var assembly = Assembly.LoadFrom(Path.Combine(path));
var icon = assembly.GetManifestResourceStream(sourceName);
PngBitmapDecoder m_decoder = new PngBitmapDecoder(icon, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
ImageSource m_source = m_decoder.Frames[0];
return (m_source);
}
catch { }
return null;
}
}
}
#region Namespaces
using System.IO;
using System.Reflection;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.UI;
#endregion
namespace xUnitRevit
{
class App : IExternalApplication
{
public Result OnStartup(UIControlledApplication a)
{
a.ControlledApplication.ApplicationInitialized += ControlledApplication_ApplicationInitialized;
string path = typeof(App).Assembly.Location;
RibbonPanel ribbonPanel = a.CreateRibbonPanel("xUnitRevit by Speckle");
var xUnitRevitButton = ribbonPanel.AddItem(new PushButtonData("Test Runner", "Test Runner", typeof(App).Assembly.Location, typeof(Command).FullName)) as PushButton;
if (xUnitRevitButton != null)
{
xUnitRevitButton.Image = LoadPngImgSource("xUnitRevitRunner.Assets.icon16.png", path);
xUnitRevitButton.LargeImage = LoadPngImgSource("xUnitRevitRunner.Assets.icon32.png", path);
xUnitRevitButton.ToolTipImage = LoadPngImgSource("xUnitRevitRunner.Assets.icon32.png", path);
xUnitRevitButton.ToolTip = "xUnit Test runner for Revit";
xUnitRevitButton.AvailabilityClassName = typeof(CmdAvailabilityViews).FullName;
xUnitRevitButton.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems"));
}
return Result.Succeeded;
}
private void ControlledApplication_ApplicationInitialized(object sender, Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e)
{
var app = sender as Application;
using var uiapp = new UIApplication(app);
Runner.ReadConfig();
if (Runner.Config.AutoStart)
Runner.Launch(uiapp);
}
public Result OnShutdown(UIControlledApplication a)
{
return Result.Succeeded;
}
private ImageSource LoadPngImgSource(string sourceName, string path)
{
try
{
var assembly = Assembly.LoadFrom(Path.Combine(path));
var icon = assembly.GetManifestResourceStream(sourceName);
PngBitmapDecoder m_decoder = new PngBitmapDecoder(icon, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
ImageSource m_source = m_decoder.Frames[0];
return (m_source);
}
catch { }
return null;
}
}
}

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -1,22 +1,22 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace xUnitRevit
{
internal class CmdAvailabilityViews : IExternalCommandAvailability
{
/// <summary>
/// Command Availability - Views
/// </summary>
/// <param name="applicationData"></param>
/// <param name="selectedCategories"></param>
/// <returns></returns>
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
//Can be run from any view/state
return true;
}
}
}
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace xUnitRevit
{
internal class CmdAvailabilityViews : IExternalCommandAvailability
{
/// <summary>
/// Command Availability - Views
/// </summary>
/// <param name="applicationData"></param>
/// <param name="selectedCategories"></param>
/// <returns></returns>
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{
//Can be run from any view/state
return true;
}
}
}
@@ -1,23 +1,23 @@
#region Namespaces
using System.Threading;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
#endregion
namespace xUnitRevit
{
[Transaction(TransactionMode.Manual)]
public class Command : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
var uiapp = commandData.Application;
Runner.Launch(uiapp);
return Result.Succeeded;
}
}
}
#region Namespaces
using System.Threading;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
#endregion
namespace xUnitRevit
{
[Transaction(TransactionMode.Manual)]
public class Command : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
var uiapp = commandData.Application;
Runner.Launch(uiapp);
return Result.Succeeded;
}
}
}
@@ -1,13 +1,13 @@
using System.Collections.Generic;
namespace xUnitRevit
{
/// <summary>
/// Simple configuration file for lazy developers
/// </summary>
public class Configuration
{
public IList<string> StartupAssemblies { get; set; } = new List<string>();
public bool AutoStart { get; set; } = false;
}
}
using System.Collections.Generic;
namespace xUnitRevit
{
/// <summary>
/// Simple configuration file for lazy developers
/// </summary>
public class Configuration
{
public IList<string> StartupAssemblies { get; set; } = new List<string>();
public bool AutoStart { get; set; } = false;
}
}
@@ -1,43 +1,43 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Autodesk.Revit.UI;
namespace xUnitRevit
{
/// <summary>
/// Event invoker. Has a queue of actions that, in theory, this thing should iterate through.
/// Required to run transactions form a non modal window.
/// </summary>
public class ExternalEventHandler : IExternalEventHandler
{
public bool Running = false;
public IList<Action> Queue { get; set; }
public ExternalEventHandler(IList<Action> queue)
{
Queue = queue;
}
public void Execute(UIApplication app)
{
Debug.WriteLine("Current queue len is: " + Queue.Count);
if (Running) return; // queue will run itself through
Running = true;
Queue[0]();
Queue.RemoveAt(0);
Running = false;
}
public string GetName()
{
return "xUnit Revit";
}
}
}
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Autodesk.Revit.UI;
namespace xUnitRevit
{
/// <summary>
/// Event invoker. Has a queue of actions that, in theory, this thing should iterate through.
/// Required to run transactions form a non modal window.
/// </summary>
public class ExternalEventHandler : IExternalEventHandler
{
public bool Running = false;
public IList<Action> Queue { get; set; }
public ExternalEventHandler(IList<Action> queue)
{
Queue = queue;
}
public void Execute(UIApplication app)
{
Debug.WriteLine("Current queue len is: " + Queue.Count);
if (Running) return; // queue will run itself through
Running = true;
Queue[0]();
Queue.RemoveAt(0);
Running = false;
}
public string GetName()
{
return "xUnit Revit";
}
}
}
@@ -1,60 +1,60 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Web.Script.Serialization;
using Autodesk.Revit.UI;
using Xunit.Runner.Wpf;
using Xunit.Runner.Wpf.ViewModel;
using xUnitRevitUtils;
namespace xUnitRevit
{
/// <summary>
/// Responsible for launching the xUnit WPF interface and initializing xru with Revit data
/// </summary>
public static class Runner
{
internal static Configuration Config = new Configuration();
internal static void Launch(UIApplication uiapp)
{
try
{
var queue = new List<Action>();
using var eventHandler = ExternalEvent.Create(new ExternalEventHandler(queue));
xru.Initialize(uiapp, SynchronizationContext.Current, eventHandler, queue);
var main = new MainWindow
{
Title = "xUnit Revit by Speckle",
MaxHeight = 800
};
//pre-load asssemblies, if you're a lazy developer
if (main.DataContext is MainViewModel mainViewModel)
mainViewModel.StartupAssemblies = Config.StartupAssemblies.ToList();
main.Show();
}
catch
{
//fail silently
}
}
internal static void ReadConfig()
{
try
{
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var path = Path.Combine(dir, "config.json");
var JavaScriptSerializer = new JavaScriptSerializer();
var json = File.ReadAllText(path);
Config = JavaScriptSerializer.Deserialize<Configuration>(json);
}
catch { }
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Web.Script.Serialization;
using Autodesk.Revit.UI;
using Xunit.Runner.Wpf;
using Xunit.Runner.Wpf.ViewModel;
using xUnitRevitUtils;
namespace xUnitRevit
{
/// <summary>
/// Responsible for launching the xUnit WPF interface and initializing xru with Revit data
/// </summary>
public static class Runner
{
internal static Configuration Config = new Configuration();
internal static void Launch(UIApplication uiapp)
{
try
{
var queue = new List<Action>();
using var eventHandler = ExternalEvent.Create(new ExternalEventHandler(queue));
xru.Initialize(uiapp, SynchronizationContext.Current, eventHandler, queue);
var main = new MainWindow
{
Title = "xUnit Revit Runner by Speckle",
MaxHeight = 800
};
//pre-load asssemblies, if you're a lazy developer
if (main.DataContext is MainViewModel mainViewModel)
mainViewModel.StartupAssemblies = Config.StartupAssemblies.ToList();
main.Show();
}
catch
{
//fail silently
}
}
internal static void ReadConfig()
{
try
{
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var path = Path.Combine(dir, "config.json");
var JavaScriptSerializer = new JavaScriptSerializer();
var json = File.ReadAllText(path);
Config = JavaScriptSerializer.Deserialize<Configuration>(json);
}
catch { }
}
}
}
@@ -11,7 +11,7 @@
</AddIn>-->
<AddIn Type="Application">
<Name>xUnitRevit Runner</Name>
<Assembly>xUnitRevit\xUnitRevit.dll</Assembly>
<Assembly>xUnitRevitRunner\xUnitRevitRunner.dll</Assembly>
<FullClassName>xUnitRevit.App</FullClassName>
<ClientId>d9c9ed6f-7b2a-4c47-8f87-a6f33a553d50</ClientId>
<VendorId>speckle</VendorId>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects Condition="'$(MSBuildVersion)' == '' Or '$(MSBuildVersion)' &lt; '16.0'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
<HasSharedItems>true</HasSharedItems>
<SharedGUID>2b4f4767-cf26-485b-adb3-751250eb1cdb</SharedGUID>
</PropertyGroup>
<PropertyGroup Label="Configuration">
<Import_RootNamespace>xUnitRevitShared</Import_RootNamespace>
</PropertyGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)Assets\icon.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Assets\icon16.png" />
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Assets\icon32.png" />
</ItemGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)App.cs" />
<Compile Include="$(MSBuildThisFileDirectory)CmdAvailabilityViews.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Command.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Configuration.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ExternalEventHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Runner.cs" />
</ItemGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)config_sample.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)xUnitRevitRunner.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>2b4f4767-cf26-485b-adb3-751250eb1cdb</ProjectGuid>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
<PropertyGroup />
<Import Project="xUnitRevitShared.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
</Project>
@@ -60,9 +60,9 @@
</PropertyGroup>
<ItemGroup Condition="'$(IsLibraryProject)' == 'true'">
<None Include="$(MSBuildThisFileDirectory)\LICENSE" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)\icon.png" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)\readme.md" Pack="true" PackagePath="\"/>
<None Include="$(MSBuildThisFileDirectory)\..\LICENSE" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)\..\icon.png" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)\..\readme.md" Pack="true" PackagePath="\"/>
<Compile Include="$(MSBuildThisFileDirectory)\xUnitRevitUtilsShared\xru.cs" Link="xru.cs" />
</ItemGroup>
@@ -8,7 +8,9 @@
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2022.0.2.1" />
<PackageReference Include="Speckle.Revit.API" Version="2022.0.2.1" >
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
@@ -1,7 +1,7 @@
<Project Sdk="MSBuild.Sdk.Extras/3.0.44">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2023</Description>
<PackageId>xUnitRevitUtils.2023</PackageId>
</PropertyGroup>
@@ -1,194 +1,194 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Xunit;
namespace xUnitRevitUtils
{
/// <summary>
/// Utility class with methods and properties used by the xUnit Revit plugin
/// </summary>
public static class xru
{
public static UIApplication Uiapp { get; set; }
private static IList<Action> Queue { get; set; }
private static ExternalEvent EventHandler { get; set; }
public static SynchronizationContext UiContext { get; set; }
public static void Initialize(UIApplication uiapp, SynchronizationContext uiContext, ExternalEvent eventHandler, IList<Action> queue)
{
Uiapp = uiapp;
UiContext = uiContext;
EventHandler = eventHandler;
Queue = queue;
}
#region utility methods
/// <summary>
/// Returns the selected elements in the active document
/// </summary>
/// <returns></returns>
public static IList<Element> GetActiveSelection()
{
Assert.NotNull(Uiapp);
if (Uiapp.ActiveUIDocument != null)
return Uiapp.ActiveUIDocument.Selection.GetElementIds().Select(x => Uiapp.ActiveUIDocument.Document.GetElement(x)).ToList();
return new List<Element>();
}
/// <summary>
/// Opens and activates a document if not open already
/// </summary>
/// <param name="filePath">Path to the file to open</param>
public static Document OpenDoc(string filePath)
{
Assert.NotNull(Uiapp);
Document doc = null;
//OpenAndActivateDocument only works if run from the current context
UiContext.Send(x => doc = Uiapp.OpenAndActivateDocument(filePath).Document, null);
Assert.NotNull(doc);
return doc;
}
/// <summary>
/// Closes the provided Revit document
/// </summary>
/// <param name="doc">Revit document to be closed</param>
/// <param name="saveChanges">If true, saves changes to document before closing</param>
/// <returns>
/// Bool indicating whether or not the document was successfully closed
/// </returns>
public static bool CloseDoc(Document doc, bool saveChanges = false)
{
if (doc == null)
return false;
var result = false;
UiContext.Send(x => result = doc.Close(saveChanges), null);
return result;
}
/// <summary>
/// Creates a new empty document
/// </summary>
/// <param name="templatePath">Path to the project template</param>
/// <param name="filePath">Path where to save the new doc</param>
/// <param name="overwrite">If true overwrites existing files with same name</param>
/// <returns></returns>
public static Document CreateNewDoc(string templatePath, string filePath, bool overwrite = true)
{
Assert.NotNull(Uiapp);
Document doc = null;
try
{
if (overwrite && File.Exists(filePath))
File.Delete(filePath);
}
catch
{
}
//OpenAndActivateDocument only works if run from the current context
UiContext.Send(x =>
{
//if already open, just use it
if (!File.Exists(filePath))
{
doc = Uiapp.Application.NewProjectDocument(templatePath);
doc.SaveAs(filePath);
doc.Close();
}
doc = Uiapp.OpenAndActivateDocument(filePath).Document;
}
, null);
Assert.NotNull(doc);
return doc;
}
/// <summary>
/// Runs an Action in a Revit transaction, uses TaskCompletionSource to communicate when done
/// </summary>
/// <param name="action">Action to run</param>
/// <param name="doc">Revit Document</param>
/// <param name="transactionName">Transaction Name</param>
/// <param name="ignoreWarnings">Enable to swallow all warnings generated by the transaction and prevent them from being raised within Revit</param>
/// <returns></returns>
public static Task RunInTransaction(Action action, Document doc, string transactionName = "transaction", bool ignoreWarnings = false)
{
var tcs = new TaskCompletionSource<string>();
Queue.Add(new Action(() =>
{
try
{
using var transaction = new Transaction(doc, transactionName);
transaction.Start();
if (ignoreWarnings)
{
using var options = transaction.GetFailureHandlingOptions();
options.SetFailuresPreprocessor(new IgnoreAllWarnings());
transaction.SetFailureHandlingOptions(options);
}
action.Invoke();
transaction.Commit();
}
catch (Exception e)
{
tcs.TrySetException(e);
}
tcs.TrySetResult("");
}));
EventHandler.Raise();
return tcs.Task;
}
/// <summary>
/// Runs an Action, uses TaskCompletionSource to communicate when done
/// </summary>
/// <param name="action">Action to run</param>
/// <param name="doc">Revit Document</param>
/// <returns></returns>
public static Task Run(Action action, Document doc)
{
var tcs = new TaskCompletionSource<string>();
Queue.Add(new Action(() =>
{
try
{
action.Invoke();
}
catch (Exception e)
{
tcs.TrySetException(e);
}
tcs.TrySetResult("");
}));
EventHandler.Raise();
return tcs.Task;
}
/// <summary>
/// A failures preprocesser that clears any failures that occur within a transaction
/// </summary>
internal class IgnoreAllWarnings : IFailuresPreprocessor
{
public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
{
var failList = failuresAccessor.GetFailureMessages();
foreach (FailureMessageAccessor failure in failList)
{
failuresAccessor.DeleteWarning(failure);
}
return FailureProcessingResult.Continue;
}
}
#endregion
}
}
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Xunit;
namespace xUnitRevitUtils
{
/// <summary>
/// Utility class with methods and properties used by the xUnit Revit plugin
/// </summary>
public static class xru
{
public static UIApplication Uiapp { get; set; }
private static IList<Action> Queue { get; set; }
private static ExternalEvent EventHandler { get; set; }
public static SynchronizationContext UiContext { get; set; }
public static void Initialize(UIApplication uiapp, SynchronizationContext uiContext, ExternalEvent eventHandler, IList<Action> queue)
{
Uiapp = uiapp;
UiContext = uiContext;
EventHandler = eventHandler;
Queue = queue;
}
#region utility methods
/// <summary>
/// Returns the selected elements in the active document
/// </summary>
/// <returns></returns>
public static IList<Element> GetActiveSelection()
{
Assert.NotNull(Uiapp);
if (Uiapp.ActiveUIDocument != null)
return Uiapp.ActiveUIDocument.Selection.GetElementIds().Select(x => Uiapp.ActiveUIDocument.Document.GetElement(x)).ToList();
return new List<Element>();
}
/// <summary>
/// Opens and activates a document if not open already
/// </summary>
/// <param name="filePath">Path to the file to open</param>
public static Document OpenDoc(string filePath)
{
Assert.NotNull(Uiapp);
Document doc = null;
//OpenAndActivateDocument only works if run from the current context
UiContext.Send(x => doc = Uiapp.OpenAndActivateDocument(filePath).Document, null);
Assert.NotNull(doc);
return doc;
}
/// <summary>
/// Closes the provided Revit document
/// </summary>
/// <param name="doc">Revit document to be closed</param>
/// <param name="saveChanges">If true, saves changes to document before closing</param>
/// <returns>
/// Bool indicating whether or not the document was successfully closed
/// </returns>
public static bool CloseDoc(Document doc, bool saveChanges = false)
{
if (doc == null)
return false;
var result = false;
UiContext.Send(x => result = doc.Close(saveChanges), null);
return result;
}
/// <summary>
/// Creates a new empty document
/// </summary>
/// <param name="templatePath">Path to the project template</param>
/// <param name="filePath">Path where to save the new doc</param>
/// <param name="overwrite">If true overwrites existing files with same name</param>
/// <returns></returns>
public static Document CreateNewDoc(string templatePath, string filePath, bool overwrite = true)
{
Assert.NotNull(Uiapp);
Document doc = null;
try
{
if (overwrite && File.Exists(filePath))
File.Delete(filePath);
}
catch
{
}
//OpenAndActivateDocument only works if run from the current context
UiContext.Send(x =>
{
//if already open, just use it
if (!File.Exists(filePath))
{
doc = Uiapp.Application.NewProjectDocument(templatePath);
doc.SaveAs(filePath);
doc.Close();
}
doc = Uiapp.OpenAndActivateDocument(filePath).Document;
}
, null);
Assert.NotNull(doc);
return doc;
}
/// <summary>
/// Runs an Action in a Revit transaction, uses TaskCompletionSource to communicate when done
/// </summary>
/// <param name="action">Action to run</param>
/// <param name="doc">Revit Document</param>
/// <param name="transactionName">Transaction Name</param>
/// <param name="ignoreWarnings">Enable to swallow all warnings generated by the transaction and prevent them from being raised within Revit</param>
/// <returns></returns>
public static Task RunInTransaction(Action action, Document doc, string transactionName = "transaction", bool ignoreWarnings = false)
{
var tcs = new TaskCompletionSource<string>();
Queue.Add(new Action(() =>
{
try
{
using var transaction = new Transaction(doc, transactionName);
transaction.Start();
if (ignoreWarnings)
{
using var options = transaction.GetFailureHandlingOptions();
options.SetFailuresPreprocessor(new IgnoreAllWarnings());
transaction.SetFailureHandlingOptions(options);
}
action.Invoke();
transaction.Commit();
}
catch (Exception e)
{
tcs.TrySetException(e);
}
tcs.TrySetResult("");
}));
EventHandler.Raise();
return tcs.Task;
}
/// <summary>
/// Runs an Action, uses TaskCompletionSource to communicate when done
/// </summary>
/// <param name="action">Action to run</param>
/// <param name="doc">Revit Document</param>
/// <returns></returns>
public static Task Run(Action action, Document doc)
{
var tcs = new TaskCompletionSource<string>();
Queue.Add(new Action(() =>
{
try
{
action.Invoke();
}
catch (Exception e)
{
tcs.TrySetException(e);
}
tcs.TrySetResult("");
}));
EventHandler.Raise();
return tcs.Task;
}
/// <summary>
/// A failures preprocesser that clears any failures that occur within a transaction
/// </summary>
internal class IgnoreAllWarnings : IFailuresPreprocessor
{
public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
{
var failList = failuresAccessor.GetFailureMessages();
foreach (FailureMessageAccessor failure in failList)
{
failuresAccessor.DeleteWarning(failure);
}
return FailureProcessingResult.Continue;
}
}
#endregion
}
}