1 Commits

Author SHA1 Message Date
Connor Ivy 5f4e479864 actually works for 2021 2023-03-08 17:56:40 -06:00
53 changed files with 955 additions and 1026 deletions
+77
View File
@@ -0,0 +1,77 @@
name: Update issue Status
on:
issues:
types: [closed]
jobs:
update_issue:
runs-on: ubuntu-latest
steps:
- name: Get project data
env:
GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}}
ORGANIZATION: specklesystems
PROJECT_NUMBER: 9
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
echo "$PROJECT_ID"
echo "$STATUS_FIELD_ID"
echo 'DONE_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .settings | fromjson | .options[] | select(.name== "Done") | .id' project_data.json) >> $GITHUB_ENV
echo "$DONE_ID"
- name: Add Issue to project #it's already in the project, but we do this to get its node id!
env:
GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}}
ISSUE_ID: ${{ github.event.issue.node_id }}
run: |
item_id="$( gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation($project:ID!, $id:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $id}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f id=$ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
- name: Update Status
env:
GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}}
ISSUE_ID: ${{ github.event.issue.node_id }}
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation($project:ID!, $status:ID!, $id:ID!, $value:String!) {
set_status: updateProjectNextItemField(
input: {
projectId: $project
itemId: $id
fieldId: $status
value: $value
}
) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f status=$STATUS_FIELD_ID -f id=$ITEM_ID -f value=${{ env.DONE_ID }}
-45
View File
@@ -1,45 +0,0 @@
name: Build
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
strategy:
matrix:
configuration: [ Release]
runs-on: windows-latest # For a list of available runner types, refer to
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on
env:
Solution_Name: xUnitRevit.sln
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
# Install the .NET Core workload
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.3.1
# Restore the application to populate the obj folder with RuntimeIdentifiers
- name: Restore the application
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration
env:
Configuration: ${{ matrix.configuration }}
+50
View File
@@ -0,0 +1,50 @@
name: Move new issues into Project
on:
issues:
types: [opened]
jobs:
track_issue:
runs-on: ubuntu-latest
steps:
- name: Get project data
env:
GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}}
ORGANIZATION: specklesystems
PROJECT_NUMBER: 9
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
- name: Add Issue to project
env:
GITHUB_TOKEN: ${{secrets.GHPROJECT_TOKEN}}
ISSUE_ID: ${{ github.event.issue.node_id }}
run: |
item_id="$( gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation($project:ID!, $id:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $id}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f id=$ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
-37
View File
@@ -1,37 +0,0 @@
name: Publish nugets
on:
push:
tags:
- '*.*.*'
jobs:
build:
runs-on: windows-latest # For a list of available runner types, refer to
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on
env:
Solution_Name: xUnitRevit.sln
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
# Install the .NET Core workload
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Build
run: dotnet publish .\xUnitRevitUtils.sln -c Release -p:Version=${{ github.ref_name }}
- name: Publish
run: dotnet nuget push ".\artifacts\*.nupkg" -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_APIKEY }} -n --skip-duplicate
+1 -1
View File
@@ -348,5 +348,5 @@ MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder # Ionide (cross platform F# VS Code tools) working folder
.ionide/ .ionide/
xUnitRevitRunner/xUnitRevitRunnerShared/config.json xUnitRevit/config.json
.idea/ .idea/
-3
View File
@@ -1,3 +0,0 @@
[submodule "speckle.xunit.runner.wpf"]
path = speckle.xunit.runner.wpf
url = ../speckle.xunit.runner.wpf.git
@@ -16,8 +16,7 @@
<RepositoryUrl>https://github.com/Speckle-Next/xunit-Revit</RepositoryUrl> <RepositoryUrl>https://github.com/Speckle-Next/xunit-Revit</RepositoryUrl>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<Product>$(AssemblyName) ($(TargetFramework))</Product> <Product>$(AssemblyName) ($(TargetFramework))</Product>
<!--This is set by the TAG in the CI--> <Version>1.0.5</Version>
<Version>0.0.1</Version>
<AssemblyName>xUnitRevitUtils</AssemblyName> <AssemblyName>xUnitRevitUtils</AssemblyName>
<RootNamespace>xUnitRevitUtils</RootNamespace> <RootNamespace>xUnitRevitUtils</RootNamespace>
@@ -61,9 +60,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup Condition="'$(IsLibraryProject)' == 'true'"> <ItemGroup Condition="'$(IsLibraryProject)' == 'true'">
<None Include="$(MSBuildThisFileDirectory)\..\LICENSE" Pack="true" PackagePath="\" /> <None Include="$(MSBuildThisFileDirectory)\LICENSE" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)\..\icon.png" Pack="true" PackagePath="\" /> <None Include="$(MSBuildThisFileDirectory)\icon.png" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)\..\readme.md" Pack="true" PackagePath="\"/> <None Include="$(MSBuildThisFileDirectory)\readme.md" Pack="true" PackagePath="\"/>
<Compile Include="$(MSBuildThisFileDirectory)\xUnitRevitUtilsShared\xru.cs" Link="xru.cs" /> <Compile Include="$(MSBuildThisFileDirectory)\xUnitRevitUtilsShared\xru.cs" Link="xru.cs" />
</ItemGroup> </ItemGroup>
+9 -7
View File
@@ -1,6 +1,6 @@
# xUnitRevit # xUnitRevit
[![Build](https://github.com/specklesystems/xUnitRevit/actions/workflows/dotnet-desktop.yml/badge.svg?branch=master)](https://github.com/specklesystems/xUnitRevit/actions/workflows/dotnet-desktop.yml) [![Build Status](https://teocomi.visualstudio.com/Speckle/_apis/build/status/Speckle-Next.xunit-Revit?branchName=master)](https://teocomi.visualstudio.com/Speckle/_build/latest?definitionId=2&branchName=master)
![xunit2](https://user-images.githubusercontent.com/2679513/88958499-77809980-d298-11ea-84b6-e0749790ffc5.gif) ![xunit2](https://user-images.githubusercontent.com/2679513/88958499-77809980-d298-11ea-84b6-e0749790ffc5.gif)
@@ -20,7 +20,7 @@ Many thanks to all the developers of xunit and xunit.runner.wpf!
This repo is composed of 2 projects: This repo is composed of 2 projects:
- **xUnitRevitRunner**: the actual Revit addin - **xUnitRevit**: the actual Revit addin
- **xUnitRevitUtils**: a utility library to help pass Revit data to the test libraries when running the tests - **xUnitRevitUtils**: a utility library to help pass Revit data to the test libraries when running the tests
@@ -29,16 +29,18 @@ This repo is composed of 2 projects:
There are very few steps required to create and run your fist unit tests with xUnitRevit: There are very few steps required to create and run your fist unit tests with xUnitRevit:
1. create a copy of the [config sample file](xUnitRevitRunner/xUnitRevitRunnerShared/config_sample.json) and re-name the copy to `config.json` 1. create a copy of the [config sample file](xUnitRevit/config_sample.json) and re-name the copy to `config.json`
2. follow the instructions [here](#configuration) to set up the config file 2. follow the instructions [here](#configuration) to set up the config file
2. build/install xUnitRevitRunner 2. build/install xUnitRevit
3. create a test library 3. create a test library
4. start Revit, launch the xUnitRevitRunner addin and select the test library 4. start Revit, launch the xUnitRevit addin and select the test library
5. done! Add a star ⭐ to our repo if it was useful 😉 5. done! Add a star ⭐ to our repo if it was useful 😉
### Building/installing xUnitRevit ### Building/installing xUnitRevit
After cloning this repo, all you need to do to run xUnitRevitRunner is to build the project corresponding to your revit version in **Debug mode** After cloning this repo, all you need to do to run xUnitRevit is to build the project in **Debug mode**, by selecting the build configuration that matches your Revit version.
![image](https://user-images.githubusercontent.com/2679513/88941424-e5b96200-d280-11ea-8ef4-12fbb0ed13d2.png)
**This will build the project and copy its dlls to the Revit addin folder** `%appdata%\Autodesk\Revit\Addins`. **This will build the project and copy its dlls to the Revit addin folder** `%appdata%\Autodesk\Revit\Addins`.
@@ -204,4 +206,4 @@ For any security vulnerabilities or concerns, please contact us directly at secu
## License ## License
Unless otherwise described, the code in this repository is licensed under the MIT License. Please note that some modules, extensions or code herein might be otherwise licensed. This is indicated either in the root of the containing folder under a different license file, or in the respective file's header. If you have any questions, don't hesitate to get in touch with us via [email](mailto:hello@speckle.systems). Unless otherwise described, the code in this repository is licensed under the MIT License. Please note that some modules, extensions or code herein might be otherwise licensed. This is indicated either in the root of the containing folder under a different license file, or in the respective file's header. If you have any questions, don't hesitate to get in touch with us via [email](mailto:hello@speckle.systems).
+3 -9
View File
@@ -15,7 +15,6 @@
<NuGetPackageImportStamp> <NuGetPackageImportStamp>
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<LangVersion>8.0</LangVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -75,14 +74,9 @@
<Compile Include="Utils.cs" /> <Compile Include="Utils.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Speckle.Revit.API"> <ProjectReference Include="..\xUnitRevitUtils2021\xUnitRevitUtils2021.csproj">
<Version>2023.0.0</Version> <Project>{977e0b63-5706-4c2b-9c01-3c02d9ebe377}</Project>
</PackageReference> <Name>xUnitRevitUtils2021</Name>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitRevitUtils\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj">
<Project>{637136c9-ab5d-4f00-948e-c68fae2682d0}</Project>
<Name>xUnitRevitUtils2023</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+53
View File
@@ -0,0 +1,53 @@
# .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)
+127 -118
View File
@@ -3,146 +3,155 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192 VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 10.0.40219.1 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}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleLibrary", "SampleLibrary\SampleLibrary.csproj", "{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}"
EndProject 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}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{F5A2849D-7C58-4894-B9C5-8488E244B7CF}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig .editorconfig = .editorconfig
Directory.Build.props = Directory.Build.props
EndProjectSection EndProjectSection
EndProject 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("{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}"
ProjectSection(SolutionItems) = preProject
xUnitRevitRunner\Directory.Build.props = xUnitRevitRunner\Directory.Build.props
EndProjectSection
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "xUnitRevitRunnerShared", "xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.shproj", "{2B4F4767-CF26-485B-ADB3-751250EB1CDB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitRunner2019", "xUnitRevitRunner\xUnitRevitRunner2019\xUnitRevitRunner2019.csproj", "{E3A15534-FB02-4CE2-8126-22E60EB1922E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitRunner2020", "xUnitRevitRunner\xUnitRevitRunner2020\xUnitRevitRunner2020.csproj", "{3782DB94-2F99-4449-B727-D5E4172964AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitRunner2021", "xUnitRevitRunner\xUnitRevitRunner2021\xUnitRevitRunner2021.csproj", "{66615756-3C3F-4A46-9C00-D6BA2493B6FA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitRunner2022", "xUnitRevitRunner\xUnitRevitRunner2022\xUnitRevitRunner2022.csproj", "{72816F5F-F86C-4A84-A4BB-9C05F2CD5320}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitRunner2023", "xUnitRevitRunner\xUnitRevitRunner2023\xUnitRevitRunner2023.csproj", "{97D93392-9484-484F-9F5F-60C5F3D67045}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "speckle.xunit.runner.wpf", "speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj", "{54B0C195-2AF8-47EE-805A-07F8FD1E7CAA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitUtils2024", "xUnitRevitUtils\xUnitRevitUtils2024\xUnitRevitUtils2024.csproj", "{DE7A457B-8591-486F-B7D5-D609741680CC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xUnitRevitRunner2024", "xUnitRevitRunner\xUnitRevitRunner2024\xUnitRevitRunner2024.csproj", "{166086EC-696B-48D3-96A1-697C6C3936E7}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug2019|Any CPU = Debug2019|Any CPU
Debug2020|Any CPU = Debug2020|Any CPU
Debug2021|Any CPU = Debug2021|Any CPU
Debug2022|Any CPU = Debug2022|Any CPU
Debug2023|Any CPU = Debug2023|Any CPU
Release|Any CPU = Release|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 EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution 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.ActiveCfg = Debug|Any CPU
{C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Debug|Any CPU.Build.0 = 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}.Release|Any CPU.ActiveCfg = Release|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}.Release|Any CPU.Build.0 = Release|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Debug|Any CPU.Build.0 = Debug|Any CPU {C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2019|Any CPU.Build.0 = Release|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Release|Any CPU.ActiveCfg = Release|Any CPU {C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{637136C9-AB5D-4F00-948E-C68FAE2682D0}.Release|Any CPU.Build.0 = Release|Any CPU {C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2020|Any CPU.Build.0 = Release|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Debug|Any CPU.Build.0 = Debug|Any CPU {C3A8684E-15BB-4B8B-B46C-35ACE3729C35}.Release2021|Any CPU.Build.0 = Release|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FBB8939-AEF1-4ED6-906D-AEB676BB683E}.Release|Any CPU.Build.0 = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Debug|Any CPU.Build.0 = Debug|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{441C42B5-400D-4EA3-9F2A-26B80CF37E8E}.Release|Any CPU.Build.0 = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Debug|Any CPU.Build.0 = Debug|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Debug2023|Any CPU.Build.0 = Debug|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6118A3C3-479F-4CA9-BB00-9FCBF55BF8B8}.Release|Any CPU.Build.0 = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release|Any CPU.Build.0 = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Debug|Any CPU.Build.0 = Debug|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0BF38C2-13BC-4ACC-B0F2-4DFE82965DB4}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Release|Any CPU.Build.0 = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3A15534-FB02-4CE2-8126-22E60EB1922E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3A15534-FB02-4CE2-8126-22E60EB1922E}.Debug|Any CPU.Build.0 = Debug|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2019|Any CPU.ActiveCfg = Debug|Any CPU
{E3A15534-FB02-4CE2-8126-22E60EB1922E}.Release|Any CPU.ActiveCfg = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2020|Any CPU.ActiveCfg = Debug|Any CPU
{E3A15534-FB02-4CE2-8126-22E60EB1922E}.Release|Any CPU.Build.0 = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2021|Any CPU.ActiveCfg = Debug|Any CPU
{3782DB94-2F99-4449-B727-D5E4172964AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2022|Any CPU.ActiveCfg = Debug|Any CPU
{3782DB94-2F99-4449-B727-D5E4172964AD}.Debug|Any CPU.Build.0 = Debug|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2022|Any CPU.Build.0 = Debug|Any CPU
{3782DB94-2F99-4449-B727-D5E4172964AD}.Release|Any CPU.ActiveCfg = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Debug2023|Any CPU.ActiveCfg = Debug|Any CPU
{3782DB94-2F99-4449-B727-D5E4172964AD}.Release|Any CPU.Build.0 = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66615756-3C3F-4A46-9C00-D6BA2493B6FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Release|Any CPU.Build.0 = Release|Any CPU
{66615756-3C3F-4A46-9C00-D6BA2493B6FA}.Debug|Any CPU.Build.0 = Debug|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Release2019|Any CPU.ActiveCfg = Release|Any CPU
{66615756-3C3F-4A46-9C00-D6BA2493B6FA}.Release|Any CPU.ActiveCfg = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Release2020|Any CPU.ActiveCfg = Release|Any CPU
{66615756-3C3F-4A46-9C00-D6BA2493B6FA}.Release|Any CPU.Build.0 = Release|Any CPU {78770414-4F6B-4429-BD8F-F0F64A349551}.Release2021|Any CPU.ActiveCfg = Release|Any CPU
{72816F5F-F86C-4A84-A4BB-9C05F2CD5320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72816F5F-F86C-4A84-A4BB-9C05F2CD5320}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72816F5F-F86C-4A84-A4BB-9C05F2CD5320}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72816F5F-F86C-4A84-A4BB-9C05F2CD5320}.Release|Any CPU.Build.0 = Release|Any CPU
{97D93392-9484-484F-9F5F-60C5F3D67045}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97D93392-9484-484F-9F5F-60C5F3D67045}.Debug|Any CPU.Build.0 = Debug|Any CPU
{97D93392-9484-484F-9F5F-60C5F3D67045}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97D93392-9484-484F-9F5F-60C5F3D67045}.Release|Any CPU.Build.0 = Release|Any CPU
{54B0C195-2AF8-47EE-805A-07F8FD1E7CAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{54B0C195-2AF8-47EE-805A-07F8FD1E7CAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{54B0C195-2AF8-47EE-805A-07F8FD1E7CAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54B0C195-2AF8-47EE-805A-07F8FD1E7CAA}.Release|Any CPU.Build.0 = Release|Any CPU
{DE7A457B-8591-486F-B7D5-D609741680CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE7A457B-8591-486F-B7D5-D609741680CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE7A457B-8591-486F-B7D5-D609741680CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE7A457B-8591-486F-B7D5-D609741680CC}.Release|Any CPU.Build.0 = Release|Any CPU
{166086EC-696B-48D3-96A1-697C6C3936E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{166086EC-696B-48D3-96A1-697C6C3936E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{166086EC-696B-48D3-96A1-697C6C3936E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{166086EC-696B-48D3-96A1-697C6C3936E7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection 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}
{2B4F4767-CF26-485B-ADB3-751250EB1CDB} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{E3A15534-FB02-4CE2-8126-22E60EB1922E} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{3782DB94-2F99-4449-B727-D5E4172964AD} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{66615756-3C3F-4A46-9C00-D6BA2493B6FA} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{72816F5F-F86C-4A84-A4BB-9C05F2CD5320} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{97D93392-9484-484F-9F5F-60C5F3D67045} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
{54B0C195-2AF8-47EE-805A-07F8FD1E7CAA} = {B01105F5-963D-42C3-BFA7-2D26AC375D07}
{DE7A457B-8591-486F-B7D5-D609741680CC} = {EDC05463-E574-4FF0-8518-D93D70EC138C}
{166086EC-696B-48D3-96A1-697C6C3936E7} = {CF685C5E-70E1-40C5-BCFD-1E27695F0364}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1CD726E4-6BBA-4FC3-9C57-0981EF1A9475} SolutionGuid = {1CD726E4-6BBA-4FC3-9C57-0981EF1A9475}
EndGlobalSection EndGlobalSection
GlobalSection(SharedMSBuildProjectFiles) = preSolution
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{166086ec-696b-48d3-96a1-697c6c3936e7}*SharedItemsImports = 5
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{2b4f4767-cf26-485b-adb3-751250eb1cdb}*SharedItemsImports = 13
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{3782db94-2f99-4449-b727-d5e4172964ad}*SharedItemsImports = 5
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{66615756-3c3f-4a46-9c00-d6ba2493b6fa}*SharedItemsImports = 5
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{72816f5f-f86c-4a84-a4bb-9c05f2cd5320}*SharedItemsImports = 5
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{97d93392-9484-484f-9f5f-60c5f3d67045}*SharedItemsImports = 5
xUnitRevitRunner\xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems*{e3a15534-fb02-4ce2-8126-22e60eb1922e}*SharedItemsImports = 5
EndGlobalSection
EndGlobal EndGlobal
@@ -1,79 +1,68 @@
#region Namespaces #region Namespaces
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.UI; using Autodesk.Revit.UI;
#endregion #endregion
namespace xUnitRevit namespace xUnitRevit
{ {
class App : IExternalApplication class App : IExternalApplication
{ {
public Result OnStartup(UIControlledApplication a) public Result OnStartup(UIControlledApplication a)
{ {
a.ControlledApplication.ApplicationInitialized += ControlledApplication_ApplicationInitialized; a.ControlledApplication.ApplicationInitialized += ControlledApplication_ApplicationInitialized;
string path = typeof(App).Assembly.Location; string path = typeof(App).Assembly.Location;
RibbonPanel ribbonPanel = a.CreateRibbonPanel("xUnitRevit by Speckle"); 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; var xUnitRevitButton = ribbonPanel.AddItem(new PushButtonData("Test Runner", "Test Runner", typeof(App).Assembly.Location, typeof(Command).FullName)) as PushButton;
if (xUnitRevitButton != null) if (xUnitRevitButton != null)
{ {
xUnitRevitButton.Image = LoadPngImgSource("xUnitRevitRunner.Assets.icon16.png", path); xUnitRevitButton.Image = LoadPngImgSource("xUnitRevit.Assets.icon16.png", path);
xUnitRevitButton.LargeImage = LoadPngImgSource("xUnitRevitRunner.Assets.icon32.png", path); xUnitRevitButton.LargeImage = LoadPngImgSource("xUnitRevit.Assets.icon32.png", path);
xUnitRevitButton.ToolTipImage = LoadPngImgSource("xUnitRevitRunner.Assets.icon32.png", path); xUnitRevitButton.ToolTipImage = LoadPngImgSource("xUnitRevit.Assets.icon32.png", path);
xUnitRevitButton.ToolTip = "xUnit Test runner for Revit"; xUnitRevitButton.ToolTip = "xUnit Test runner for Revit";
xUnitRevitButton.AvailabilityClassName = typeof(CmdAvailabilityViews).FullName; xUnitRevitButton.AvailabilityClassName = typeof(CmdAvailabilityViews).FullName;
xUnitRevitButton.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems")); xUnitRevitButton.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems"));
} }
AppDomain.CurrentDomain.AssemblyResolve += delegate (object sender, ResolveEventArgs e)
{ return Result.Succeeded;
String currentFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
AssemblyName requestedName = new AssemblyName(e.Name);
if (requestedName.Name == "xunit.abstractions" || requestedName.Name == "xunit.runner.utility.net452") private void ControlledApplication_ApplicationInitialized(object sender, Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e)
{ {
var resolvedAssembly = Assembly.LoadFrom(Path.Combine(currentFolder, requestedName.Name + ".dll")); var app = sender as Application;
return resolvedAssembly; var uiapp = new UIApplication(app);
}
return null; Runner.ReadConfig();
};
if (Runner.Config.AutoStart)
return Result.Succeeded; Runner.Launch(uiapp);
} }
private void ControlledApplication_ApplicationInitialized(object sender, Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e) public Result OnShutdown(UIControlledApplication a)
{ {
var app = sender as Application; return Result.Succeeded;
var uiapp = new UIApplication(app); }
Runner.ReadConfig(); private ImageSource LoadPngImgSource(string sourceName, string path)
{
if (Runner.Config.AutoStart) try
Runner.Launch(uiapp); {
} var assembly = Assembly.LoadFrom(Path.Combine(path));
var icon = assembly.GetManifestResourceStream(sourceName);
public Result OnShutdown(UIControlledApplication a) PngBitmapDecoder m_decoder = new PngBitmapDecoder(icon, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
{ ImageSource m_source = m_decoder.Frames[0];
return Result.Succeeded; return (m_source);
} }
catch { }
private ImageSource LoadPngImgSource(string sourceName, string path)
{ return null;
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.DB;
using Autodesk.Revit.UI; using Autodesk.Revit.UI;
namespace xUnitRevit namespace xUnitRevit
{ {
internal class CmdAvailabilityViews : IExternalCommandAvailability internal class CmdAvailabilityViews : IExternalCommandAvailability
{ {
/// <summary> /// <summary>
/// Command Availability - Views /// Command Availability - Views
/// </summary> /// </summary>
/// <param name="applicationData"></param> /// <param name="applicationData"></param>
/// <param name="selectedCategories"></param> /// <param name="selectedCategories"></param>
/// <returns></returns> /// <returns></returns>
public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories) public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
{ {
//Can be run from any view/state //Can be run from any view/state
return true; return true;
} }
} }
} }
@@ -1,23 +1,23 @@
#region Namespaces #region Namespaces
using System.Threading; using System.Threading;
using Autodesk.Revit.Attributes; using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB; using Autodesk.Revit.DB;
using Autodesk.Revit.UI; using Autodesk.Revit.UI;
#endregion #endregion
namespace xUnitRevit namespace xUnitRevit
{ {
[Transaction(TransactionMode.Manual)] [Transaction(TransactionMode.Manual)]
public class Command : IExternalCommand public class Command : IExternalCommand
{ {
public Result Execute( public Result Execute(
ExternalCommandData commandData, ExternalCommandData commandData,
ref string message, ref string message,
ElementSet elements) ElementSet elements)
{ {
var uiapp = commandData.Application; var uiapp = commandData.Application;
Runner.Launch(uiapp); Runner.Launch(uiapp);
return Result.Succeeded; return Result.Succeeded;
} }
} }
} }
@@ -1,13 +1,13 @@
using System.Collections.Generic; using System.Collections.Generic;
namespace xUnitRevit namespace xUnitRevit
{ {
/// <summary> /// <summary>
/// Simple configuration file for lazy developers /// Simple configuration file for lazy developers
/// </summary> /// </summary>
public class Configuration public class Configuration
{ {
public IList<string> StartupAssemblies { get; set; } = new List<string>(); public IList<string> StartupAssemblies { get; set; } = new List<string>();
public bool AutoStart { get; set; } = false; public bool AutoStart { get; set; } = false;
} }
} }
@@ -1,43 +1,43 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using Autodesk.Revit.UI; using Autodesk.Revit.UI;
namespace xUnitRevit namespace xUnitRevit
{ {
/// <summary> /// <summary>
/// Event invoker. Has a queue of actions that, in theory, this thing should iterate through. /// Event invoker. Has a queue of actions that, in theory, this thing should iterate through.
/// Required to run transactions form a non modal window. /// Required to run transactions form a non modal window.
/// </summary> /// </summary>
public class ExternalEventHandler : IExternalEventHandler public class ExternalEventHandler : IExternalEventHandler
{ {
public bool Running = false; public bool Running = false;
public IList<Action> Queue { get; set; } public IList<Action> Queue { get; set; }
public ExternalEventHandler(IList<Action> queue) public ExternalEventHandler(IList<Action> queue)
{ {
Queue = queue; Queue = queue;
} }
public void Execute(UIApplication app) public void Execute(UIApplication app)
{ {
Debug.WriteLine("Current queue len is: " + Queue.Count); Debug.WriteLine("Current queue len is: " + Queue.Count);
if (Running) return; // queue will run itself through if (Running) return; // queue will run itself through
Running = true; Running = true;
Queue[0](); Queue[0]();
Queue.RemoveAt(0); Queue.RemoveAt(0);
Running = false; Running = false;
} }
public string GetName() public string GetName()
{ {
return "xUnit Revit"; return "xUnit Revit";
} }
} }
} }
+35
View File
@@ -0,0 +1,35 @@
using System.Reflection;
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: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Speckle")]
[assembly: AssemblyProduct("xUnitRevit")]
[assembly: AssemblyCopyright("")]
[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("321044f7-b0b2-4b1c-af18-e71a19252be0")]
// 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.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
@@ -1,60 +1,60 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using System.Web.Script.Serialization; using System.Web.Script.Serialization;
using Autodesk.Revit.UI; using Autodesk.Revit.UI;
using Xunit.Runner.Wpf; using Xunit.Runner.Wpf;
using Xunit.Runner.Wpf.ViewModel; using Xunit.Runner.Wpf.ViewModel;
using xUnitRevitUtils; using xUnitRevitUtils;
namespace xUnitRevit namespace xUnitRevit
{ {
/// <summary> /// <summary>
/// Responsible for launching the xUnit WPF interface and initializing xru with Revit data /// Responsible for launching the xUnit WPF interface and initializing xru with Revit data
/// </summary> /// </summary>
public static class Runner public static class Runner
{ {
internal static Configuration Config = new Configuration(); internal static Configuration Config = new Configuration();
internal static void Launch(UIApplication uiapp) internal static void Launch(UIApplication uiapp)
{ {
try try
{ {
var queue = new List<Action>(); var queue = new List<Action>();
var eventHandler = ExternalEvent.Create(new ExternalEventHandler(queue)); using var eventHandler = ExternalEvent.Create(new ExternalEventHandler(queue));
xru.Initialize(uiapp, SynchronizationContext.Current, eventHandler, queue); xru.Initialize(uiapp, SynchronizationContext.Current, eventHandler, queue);
var main = new MainWindow var main = new MainWindow
{ {
Title = "xUnit Revit Runner by Speckle", Title = "xUnit Revit by Speckle",
MaxHeight = 800 MaxHeight = 800
}; };
//pre-load asssemblies, if you're a lazy developer //pre-load asssemblies, if you're a lazy developer
if (main.DataContext is MainViewModel mainViewModel) if (main.DataContext is MainViewModel mainViewModel)
mainViewModel.StartupAssemblies = Config.StartupAssemblies.ToList(); mainViewModel.StartupAssemblies = Config.StartupAssemblies.ToList();
main.Show(); main.Show();
} }
catch catch
{ {
//fail silently //fail silently
} }
} }
internal static void ReadConfig() internal static void ReadConfig()
{ {
try try
{ {
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var path = Path.Combine(dir, "config.json"); var path = Path.Combine(dir, "config.json");
var JavaScriptSerializer = new JavaScriptSerializer(); var JavaScriptSerializer = new JavaScriptSerializer();
var json = File.ReadAllText(path); var json = File.ReadAllText(path);
Config = JavaScriptSerializer.Deserialize<Configuration>(json); Config = JavaScriptSerializer.Deserialize<Configuration>(json);
} }
catch { } catch { }
} }
} }
} }
@@ -2,5 +2,5 @@
"startupAssemblies": [ "startupAssemblies": [
"C:\\Code\\Speckle-Next\\ConverterRevit\\ConverterRevitTests\\bin\\Debug\\ConverterRevitTests.dll" "C:\\Code\\Speckle-Next\\ConverterRevit\\ConverterRevitTests\\bin\\Debug\\ConverterRevitTests.dll"
], ],
"autoStart": false "autoStart": true
} }
@@ -11,7 +11,7 @@
</AddIn>--> </AddIn>-->
<AddIn Type="Application"> <AddIn Type="Application">
<Name>xUnitRevit Runner</Name> <Name>xUnitRevit Runner</Name>
<Assembly>xUnitRevitRunner\xUnitRevitRunner.dll</Assembly> <Assembly>xUnitRevit\xUnitRevit.dll</Assembly>
<FullClassName>xUnitRevit.App</FullClassName> <FullClassName>xUnitRevit.App</FullClassName>
<ClientId>d9c9ed6f-7b2a-4c47-8f87-a6f33a553d50</ClientId> <ClientId>d9c9ed6f-7b2a-4c47-8f87-a6f33a553d50</ClientId>
<VendorId>speckle</VendorId> <VendorId>speckle</VendorId>
+259
View File
@@ -0,0 +1,259 @@
<?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>
</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>
<PackageReference Include="xUnitRevitUtils.2021">
<Version>1.0.4</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>
-89
View File
@@ -1,89 +0,0 @@
<Project>
<PropertyGroup>
<Copyright>Copyright (c) Speckle</Copyright>
<Authors>Speckle</Authors>
<Owners>Speckle</Owners>
<NeutralLanguage>en-US</NeutralLanguage>
<MinClientVersion>2.14</MinClientVersion>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<RepositoryUrl>https://github.com/specklesystems/xUnitRevit</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<Product>$(AssemblyName) ($(TargetFramework))</Product>
<Version>1.0.0</Version>
<LangVersion>8.0</LangVersion>
<AssemblyName>xUnitRevitRunner</AssemblyName>
<RootNamespace>xUnitRevitRunner</RootNamespace>
<!--<Nullable>enable</Nullable>-->
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>latest</LangVersion>
<NoWarn>$(NoWarn);1591;1701;1702;1705;VSX1000;CS0109;CS0108;CS0618;CS0114;NU1603</NoWarn>
<Platform>AnyCPU</Platform>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest</AnalysisLevel>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<IncludeSymbols>false</IncludeSymbols>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<DesignTimeBuild>false</DesignTimeBuild>
<DebugType>portable</DebugType>
<DebugSymbols>true</DebugSymbols>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<Import Project="xUnitRevitRunnerShared\xUnitRevitRunnerShared.projitems" Label="Shared" />
<ItemGroup>
<ProjectReference Include="..\..\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf\speckle.xunit.runner.wpf.csproj" />
</ItemGroup>
<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>
<!-- MULTIVERSION POST BUILD EVENTS START -->
<Target Name="PostBuildActions" AfterTargets="PostBuildEvent">
<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,9 +0,0 @@
{
"profiles": {
"Profile 1": {
"commandName": "Executable",
"executablePath": "$(ProgramW6432)\\Autodesk\\Revit 2023\\Revit.exe",
"remoteDebugEnabled": true
}
}
}
@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<RevitVersion>2019</RevitVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2019" Version="4.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2019\xUnitRevitUtils2019.csproj" />
</ItemGroup>
</Project>
@@ -1,9 +0,0 @@
{
"profiles": {
"Profile 1": {
"commandName": "Executable",
"executablePath": "$(ProgramW6432)\\Autodesk\\Revit 2020\\Revit.exe",
"remoteDebugEnabled": true
}
}
}
@@ -1,18 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<RevitVersion>2020</RevitVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2020" Version="4.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2020\xUnitRevitUtils2020.csproj" />
</ItemGroup>
</Project>
@@ -1,9 +0,0 @@
{
"profiles": {
"Profile 1": {
"commandName": "Executable",
"executablePath": "$(ProgramW6432)\\Autodesk\\Revit 2021\\Revit.exe",
"remoteDebugEnabled": true
}
}
}
@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<RevitVersion>2021</RevitVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2021" Version="4.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2021\xUnitRevitUtils2021.csproj" />
</ItemGroup>
</Project>
@@ -1,9 +0,0 @@
{
"profiles": {
"Profile 1": {
"commandName": "Executable",
"executablePath": "$(ProgramW6432)\\Autodesk\\Revit 2022\\Revit.exe",
"remoteDebugEnabled": true
}
}
}
@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<RevitVersion>2022</RevitVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2022.0.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2022\xUnitRevitUtils2022.csproj" />
</ItemGroup>
</Project>
@@ -1,9 +0,0 @@
{
"profiles": {
"Profile 1": {
"commandName": "Executable",
"executablePath": "$(ProgramW6432)\\Autodesk\\Revit 2023\\Revit.exe",
"remoteDebugEnabled": true
}
}
}
@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<RevitVersion>2023</RevitVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2023.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2023\xUnitRevitUtils2023.csproj" />
</ItemGroup>
</Project>
@@ -1,9 +0,0 @@
{
"profiles": {
"Profile 1": {
"commandName": "Executable",
"executablePath": "$(ProgramW6432)\\Autodesk\\Revit 2024\\Revit.exe",
"remoteDebugEnabled": true
}
}
}
@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<RevitVersion>2024</RevitVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2024.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\xUnitRevitUtils\xUnitRevitUtils2024\xUnitRevitUtils2024.csproj" />
</ItemGroup>
</Project>
@@ -1,31 +0,0 @@
<?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)xUnitRevitRunner.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
@@ -1,13 +0,0 @@
<?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>
-55
View File
@@ -1,55 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{F5A2849D-7C58-4894-B9C5-8488E244B7CF}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
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
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{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}.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}.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}.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}.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}.Release|Any CPU.ActiveCfg = Release|Any CPU
{469F8B29-F14E-49E8-B145-8C4FEF9D68CA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1CD726E4-6BBA-4FC3-9C57-0981EF1A9475}
EndGlobalSection
EndGlobal
@@ -1,29 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2019</Description>
<PackageId>xUnitRevitUtils.2019</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2019" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="IDisposableAnalyzers" Version="4.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Meziantou.Analyzer" Version="2.0.60">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -1,31 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2020</Description>
<PackageId>xUnitRevitUtils.2020</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2020" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="IDisposableAnalyzers" Version="4.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Meziantou.Analyzer" Version="2.0.60">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -1,31 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2021</Description>
<PackageId>xUnitRevitUtils.2021</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2021" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="IDisposableAnalyzers" Version="4.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Meziantou.Analyzer" Version="2.0.60">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -1,33 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2022</Description>
<PackageId>xUnitRevitUtils.2022</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2022.0.2.1">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="IDisposableAnalyzers" Version="4.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Meziantou.Analyzer" Version="2.0.60">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -1,33 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2023</Description>
<PackageId>xUnitRevitUtils.2023</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2023.0.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="IDisposableAnalyzers" Version="4.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Meziantou.Analyzer" Version="2.0.60">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -1,31 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2024</Description>
<PackageId>xUnitRevitUtils.2024</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2024.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="IDisposableAnalyzers" Version="4.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Meziantou.Analyzer" Version="2.0.60">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2019</Description>
<PackageId>xUnitRevitUtils.2019</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2019" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
</Project>
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2020</Description>
<PackageId>xUnitRevitUtils.2020</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2020" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
</Project>
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2021</Description>
<PackageId>xUnitRevitUtils.2021</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ModPlus.Revit.API.2021" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.1" />
</ItemGroup>
</Project>
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Description>xUnit runner utilities for Revit 2022</Description>
<PackageId>xUnitRevitUtils.2022</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2022.0.2.1" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
</Project>
@@ -0,0 +1,17 @@
<Project Sdk="MSBuild.Sdk.Extras/3.0.44">
<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<Description>xUnit runner utilities for Revit 2023</Description>
<PackageId>xUnitRevitUtils.2023</PackageId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.Revit.API" Version="2023.0.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>
</Project>
@@ -47,23 +47,23 @@ namespace xUnitRevitUtils
UiContext.Send(x => doc = Uiapp.OpenAndActivateDocument(filePath).Document, null); UiContext.Send(x => doc = Uiapp.OpenAndActivateDocument(filePath).Document, null);
Assert.NotNull(doc); Assert.NotNull(doc);
return doc; return doc;
} }
/// <summary> /// <summary>
/// Closes the provided Revit document /// Closes the provided Revit document
/// </summary> /// </summary>
/// <param name="doc">Revit document to be closed</param> /// <param name="doc">Revit document to be closed</param>
/// <param name="saveChanges">If true, saves changes to document before closing</param> /// <param name="saveChanges">If true, saves changes to document before closing</param>
/// <returns> /// <returns>
/// Bool indicating whether or not the document was successfully closed /// Bool indicating whether or not the document was successfully closed
/// </returns> /// </returns>
public static bool CloseDoc(Document doc, bool saveChanges = false) public static bool CloseDoc(Document doc, bool saveChanges = false)
{ {
if (doc == null) if (doc == null)
return false; return false;
var result = false; var result = false;
UiContext.Send(x => result = doc.Close(saveChanges), null); UiContext.Send(x => result = doc.Close(saveChanges), null);
return result; return result;
} }
/// <summary> /// <summary>
@@ -83,8 +83,8 @@ namespace xUnitRevitUtils
if (overwrite && File.Exists(filePath)) if (overwrite && File.Exists(filePath))
File.Delete(filePath); File.Delete(filePath);
} }
catch catch
{ {
} }
//OpenAndActivateDocument only works if run from the current context //OpenAndActivateDocument only works if run from the current context
@@ -120,17 +120,17 @@ namespace xUnitRevitUtils
{ {
try try
{ {
using var transaction = new Transaction(doc, transactionName); using var transaction = new Transaction(doc, transactionName);
transaction.Start(); transaction.Start();
if (ignoreWarnings) if (ignoreWarnings)
{ {
using var options = transaction.GetFailureHandlingOptions(); using var options = transaction.GetFailureHandlingOptions();
options.SetFailuresPreprocessor(new IgnoreAllWarnings()); options.SetFailuresPreprocessor(new IgnoreAllWarnings());
transaction.SetFailureHandlingOptions(options); transaction.SetFailureHandlingOptions(options);
} }
action.Invoke(); action.Invoke();
transaction.Commit(); transaction.Commit();
} }
catch (Exception e) catch (Exception e)