From fdc1e5e4d9f4545e6251251475549ed7a09e762b Mon Sep 17 00:00:00 2001 From: Peetu Saarinen Date: Mon, 19 May 2025 15:10:54 +0300 Subject: [PATCH 01/17] Update .gitignore --- .gitignore | 284 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 255 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 3c89787..8114573 100644 --- a/.gitignore +++ b/.gitignore @@ -1,58 +1,85 @@ +### VisualStudio template ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore # User-specific files +*.rsuser *.suo *.user *.userosscache *.sln.docstates -*.bak # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs +# Mono auto generated files +mono_crash.* + # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ -[Xx]64/ -[Xx]86/ -[Bb]uild/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ +[Ll]og/ +[Ll]ogs/ -# Visual Studio 2015 cache/options directory +# Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ +# Visual Studio 2017 auto generated files +Generated\ Files/ + # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* -# NUNIT +# NUnit *.VisualState.xml TestResult.xml +nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c -# DNX +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core project.lock.json +project.fragment.lock.json artifacts/ +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio *_i.c *_p.c -*_i.h +*_h.h *.ilk *.meta *.obj +*.iobj *.pch *.pdb +*.ipdb *.pgc *.pgd *.rsp @@ -62,7 +89,9 @@ artifacts/ *.tlh *.tmp *.tmp_proj +*_wpftmp.csproj *.log +*.tlog *.vspscc *.vssscc .builds @@ -82,6 +111,7 @@ ipch/ *.sdf *.cachefile *.VC.db +*.VC.VC.opendb # Visual Studio profiler *.psess @@ -89,6 +119,9 @@ ipch/ *.vspx *.sap +# Visual Studio Trace Files +*.e2e + # TFS 2012 Local Workspace $tf/ @@ -100,15 +133,25 @@ _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user -# JustCode is a .NET coding add-in -.JustCode - # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + # NCrunch _NCrunch_* .*crunch*.local.xml @@ -140,22 +183,27 @@ publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml - -# TODO: Un-comment the next line if you do not want to checkin -# your web deploy settings because they may include unencrypted -# passwords -#*.pubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml *.publishproj +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + # NuGet Packages *.nupkg +# NuGet Symbol Packages +*.snupkg # The packages folder can be ignored because of Package Restore -**/packages/* +**/[Pp]ackages/* # except build/, which is used as an MSBuild target. -!**/packages/build/ +!**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets @@ -167,28 +215,40 @@ csx/ ecf/ rcf/ -# Windows Store app package directory +# Windows Store app package directories and files AppPackages/ BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache -!*.[Cc]ache/ +!?*.[Cc]ache/ # Others ClientBin/ -[Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.dbproj.schemaview +*.jfm *.pfx *.publishsettings -node_modules/ orleans.codegen.cs +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + # RIA/Silverlight projects Generated_Code/ @@ -199,15 +259,22 @@ _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak # SQL Server files *.mdf *.ldf +*.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ @@ -217,6 +284,7 @@ FakesAssemblies/ # Node.js Tools for Visual Studio .ntvs_analysis.dat +node_modules/ # Visual Studio 6 build log *.plg @@ -224,6 +292,20 @@ FakesAssemblies/ # Visual Studio 6 workspace options file *.opt +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts @@ -232,12 +314,156 @@ FakesAssemblies/ **/*.Server/ModelManifest.xml _Pvt_Extensions -# LightSwitch generated files -GeneratedArtifacts/ -ModelManifest.xml - # Paket dependency manager .paket/paket.exe +paket-files/ # FAKE - F# Make -.fake/ \ No newline at end of file +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + +### Linux template +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### Windows template +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + From bcbf6dab779bd1ce7b79ebb3ce74fa0e73620bc2 Mon Sep 17 00:00:00 2001 From: Peetu Saarinen Date: Mon, 19 May 2025 15:11:17 +0300 Subject: [PATCH 02/17] Remove unused workflows --- .../Execute_build_and_test_on_main.yml | 18 ------------------ .../Execute_build_and_test_on_push.yml | 18 ------------------ .github/workflows/Execute_release.yml | 13 ------------- 3 files changed, 49 deletions(-) delete mode 100644 .github/workflows/Execute_build_and_test_on_main.yml delete mode 100644 .github/workflows/Execute_build_and_test_on_push.yml delete mode 100644 .github/workflows/Execute_release.yml diff --git a/.github/workflows/Execute_build_and_test_on_main.yml b/.github/workflows/Execute_build_and_test_on_main.yml deleted file mode 100644 index e28eb21..0000000 --- a/.github/workflows/Execute_build_and_test_on_main.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Execute_build_main - -on: - push: - branches: - - main - paths: - - 'Frends.Echo.Execute/**' - workflow_dispatch: - -jobs: - build: - uses: FrendsPlatform/FrendsTasks/.github/workflows/linux_build_main.yml@main - with: - workdir: Frends.Echo.Execute - secrets: - badge_service_api_key: ${{ secrets.BADGE_SERVICE_API_KEY }} - \ No newline at end of file diff --git a/.github/workflows/Execute_build_and_test_on_push.yml b/.github/workflows/Execute_build_and_test_on_push.yml deleted file mode 100644 index 89f820d..0000000 --- a/.github/workflows/Execute_build_and_test_on_push.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Execute_build_main - -on: - push: - branches-ignore: - - main - paths: - - 'Frends.Echo.Execute/**' - workflow_dispatch: - -jobs: - build: - uses: FrendsPlatform/FrendsTasks/.github/workflows/linux_build_test.yml@main - with: - workdir: Frends.Echo.Execute - secrets: - badge_service_api_key: ${{ secrets.BADGE_SERVICE_API_KEY }} - test_feed_api_key: ${{ secrets.TASKS_TEST_FEED_API_KEY }} diff --git a/.github/workflows/Execute_release.yml b/.github/workflows/Execute_release.yml deleted file mode 100644 index faa159a..0000000 --- a/.github/workflows/Execute_release.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Execute_release - -on: - workflow_dispatch: - -jobs: - build: - uses: FrendsPlatform/FrendsTasks/.github/workflows/release.yml@main - with: - workdir: Frends.Echo.Execute - secrets: - feed_api_key: ${{ secrets.TASKS_FEED_API_KEY }} - \ No newline at end of file From c6d30eaf903377745ab26c1f1b894e073336e7d3 Mon Sep 17 00:00:00 2001 From: Peetu Saarinen Date: Tue, 20 May 2025 16:31:01 +0300 Subject: [PATCH 03/17] Update .gitattributes --- .gitattributes | 144 +++++++++++++++++++++++++++++-------------------- 1 file changed, 85 insertions(+), 59 deletions(-) diff --git a/.gitattributes b/.gitattributes index 1ff0c42..8278e67 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,63 +1,89 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto +# Common settings that generally should always be used with your language specific settings -############################################################################### -# Set default behavior for command prompt diff. +# Auto detect text files and perform LF normalization +# https://www.davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/ +* text=auto eol=lf + +# +# The above will handle all files NOT found below # -# This is need for earlier builds of msysgit that does not have it on by -# default for csharp files. -# Note: This is only used by command line -############################################################################### -#*.cs diff=csharp - -############################################################################### -# Set the merge driver for project and solution files + +# Code files +*.cs text diff=csharp +*.cshtml text diff=html +*.csx text diff=csharp + +# Project files +*.sln text eol=crlf +*.csproj text eol=crlf + +# Documents +*.bibtex text diff=bibtex +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain +*.md text +*.tex text diff=tex +*.adoc text +*.textile text +*.mustache text +*.csv text +*.tab text +*.tsv text +*.txt text +*.sql text + +# Graphics +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.tif binary +*.tiff binary +*.ico binary +# SVG treated as an asset (binary) by default. +*.svg text +# If you want to treat it as binary, +# use the following line instead. +# *.svg binary +*.eps binary + +# Scripts +*.bash text eol=lf +*.fish text eol=lf +*.sh text eol=lf +# These are explicitly windows files and should use crlf +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf + +# Serialisation +*.json text +*.toml text +*.xml text +*.yaml text +*.yml text + +# Archives +*.7z binary +*.gz binary +*.tar binary +*.tgz binary +*.zip binary + +# Text files where line endings should be preserved +*.patch -text + # -# Merging from the command prompt will add diff markers to the files if there -# are conflicts (Merging from VS is not affected by the settings below, in VS -# the diff markers are never inserted). Diff markers may cause the following -# file extensions to fail to load in VS. An alternative would be to treat -# these files as binary and thus will always conflict and require user -# intervention with every merge. To do so, just uncomment the entries below -############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary - -############################################################################### -# behavior for image files +# Exclude files from exporting # -# image files are treated as binary by default. -############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary - -############################################################################### -# diff behavior for common document formats -# -# Convert binary document formats to text before diffing them. This feature -# is only available from the command line. Turn it on by uncommenting the -# entries below. -############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain + +.gitattributes export-ignore +.gitignore export-ignore From 955dea94c862e491fcbf39b5c6254c6e20992a2f Mon Sep 17 00:00:00 2001 From: Peetu Saarinen Date: Tue, 20 May 2025 16:33:07 +0300 Subject: [PATCH 04/17] Update task template according to new guidelines --- .github/workflows/AutoBuild.yml | 30 +-- .github/workflows/BuildMaster.yml | 28 +- .../.template.config/template.json | 249 ++++++++++-------- Frends.Template/CHANGELOG.md | 4 +- .../Frends.Echo.Execute.Tests.csproj | 57 ++-- .../Frends.Echo.Execute.Tests/UnitTests.cs | 24 +- .../Definitions/Connection.cs | 20 ++ .../Frends.Echo.Execute/Definitions/Error.cs | 20 ++ .../Frends.Echo.Execute/Definitions/Input.cs | 21 +- .../Definitions/Options.cs | 32 ++- .../Frends.Echo.Execute/Definitions/Result.cs | 23 +- .../Frends.Echo.Execute.cs | 70 +++-- .../Frends.Echo.Execute.csproj | 69 +++-- .../FrendsTaskMetadata.json | 12 +- Frends.Template/LICENSE | 4 +- Frends.Template/README.md | 4 +- Frends.Template/setup.cmd | 2 +- .../Execute_build_and_test_on_main.yml | 3 +- .../Execute_build_and_test_on_push.yml | 2 +- Frends.Template/workflows/Execute_release.yml | 1 - FrendsTaskTemplate.csproj | 28 ++ frendstask.csproj | 31 --- 22 files changed, 426 insertions(+), 308 deletions(-) create mode 100644 Frends.Template/Frends.Echo.Execute/Definitions/Connection.cs create mode 100644 Frends.Template/Frends.Echo.Execute/Definitions/Error.cs create mode 100644 FrendsTaskTemplate.csproj delete mode 100644 frendstask.csproj diff --git a/.github/workflows/AutoBuild.yml b/.github/workflows/AutoBuild.yml index fcf3c4c..0377afd 100644 --- a/.github/workflows/AutoBuild.yml +++ b/.github/workflows/AutoBuild.yml @@ -4,7 +4,7 @@ on: push: branches-ignore: - main - + env: azure_artifacts_feed_url: https://pkgs.dev.azure.com/frends-platform/frends-tasks/_packaging/test/nuget/v3/index.json @@ -13,18 +13,18 @@ jobs: name: AutoBuild on ubuntu-latest runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v1 + + - name: Pack release version + run: dotnet pack --configuration Release - - name: Pack release version - run: dotnet pack --configuration Release - - # Setup dotnet again with test feed - - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '6.0.x' - source-url: ${{ env.azure_artifacts_feed_url }} - env: - NUGET_AUTH_TOKEN: ${{ secrets.TASKS_TEST_FEED_API_KEY }} - # Push the package to the test feed - - name: Push NuGet package(s) to the test feed - run: dotnet nuget push bin/Release/frendstasktemplate.*.nupkg --api-key ${{ secrets.TASKS_TEST_FEED_API_KEY }} --source ${{ env.azure_artifacts_feed_url }} --skip-duplicate + # Setup dotnet again with test feed + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + source-url: ${{ env.azure_artifacts_feed_url }} + env: + NUGET_AUTH_TOKEN: ${{ secrets.TASKS_TEST_FEED_API_KEY }} + # Push the package to the test feed + - name: Push NuGet package(s) to the test feed + run: dotnet nuget push bin/Release/frendstasktemplate.*.nupkg --api-key ${{ secrets.TASKS_TEST_FEED_API_KEY }} --source ${{ env.azure_artifacts_feed_url }} --skip-duplicate diff --git a/.github/workflows/BuildMaster.yml b/.github/workflows/BuildMaster.yml index 5d6735d..294a8f1 100644 --- a/.github/workflows/BuildMaster.yml +++ b/.github/workflows/BuildMaster.yml @@ -1,4 +1,4 @@ -name: BuildMaster.yml +name: BuildMaster on: push: @@ -13,18 +13,18 @@ jobs: name: Build master on ubuntu-latest runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v1 - - name: Pack release version - run: dotnet pack --configuration Release - - # Setup dotnet again with prod feed - - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '6.0.x' - source-url: ${{ env.azure_artifacts_feed_url }} - env: - NUGET_AUTH_TOKEN: ${{ secrets.TASKS_FEED_API_KEY }} - - name: Push NuGet package(s) to the prod feed - run: dotnet nuget push bin/Release/frendstasktemplate.*.nupkg --api-key ${{ secrets.TASKS_FEED_API_KEY }} --source ${{ env.azure_artifacts_feed_url }} + - name: Pack release version + run: dotnet pack --configuration Release + + # Setup dotnet again with prod feed + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + source-url: ${{ env.azure_artifacts_feed_url }} + env: + NUGET_AUTH_TOKEN: ${{ secrets.TASKS_FEED_API_KEY }} + - name: Push NuGet package(s) to the prod feed + run: dotnet nuget push bin/Release/frendstasktemplate.*.nupkg --api-key ${{ secrets.TASKS_FEED_API_KEY }} --source ${{ env.azure_artifacts_feed_url }} diff --git a/Frends.Template/.template.config/template.json b/Frends.Template/.template.config/template.json index 6e183ac..90fd994 100644 --- a/Frends.Template/.template.config/template.json +++ b/Frends.Template/.template.config/template.json @@ -1,117 +1,154 @@ { - "author": "Frends", - "classifications": ["Solution"], - "name": "Frends Task template", - "identity": "FrendsTaskTemplate ", - "shortName": "frendstasktemplate", - "tags": { - "language": "C#" + "$schema": "https://json.schemastore.org/template", + "author": "Frends", + "classifications": [ + "Solution" + ], + "name": "Frends Task", + "identity": "FrendsTaskTemplate", + "shortName": "frendstasktemplate", + "tags": { + "language": "C#", + "type": "solution" + }, + "sourceName": "Frends.Echo.Execute", + "preferNameDirectory": true, + "symbols": { + "taskName": { + "type": "parameter", + "datatype": "string", + "defaultValue": "Execute", + "replaces": "Execute" }, - "sourceName": "Frends.Echo.Execute", - "preferNameDirectory": "true", - - "symbols": { - "taskName": { - "type": "parameter", - "defaultValue": "Execute", - "replaces": "Execute" - }, - "className": { - "type": "parameter", - "defaultValue": "Echo", - "replaces": "Echo" - }, - "workflows": { - "type": "parameter", - "datatype": "string", - "defaultValue": "Execute", - "FileRename": "Execute" - }, - "CurrentDate":{ - "type": "generated", - "generator": "now", - "parameters": { - "format": "yyyy-MM-dd" - }, - "replaces": "2023-08-08" - } + "className": { + "type": "parameter", + "datatype": "string", + "defaultValue": "Echo", + "replaces": "Echo" + }, + "workflows": { + "type": "parameter", + "datatype": "string", + "defaultValue": "Execute", + "FileRename": "Execute" + }, + "CurrentDate": { + "type": "generated", + "generator": "now", + "parameters": { + "format": "yyyy-MM-dd" + }, + "replaces": "GeneratedDate" }, - "SpecialCustomOperations": { - "**/*.md": { - "operations": [{ - "type": "conditional", - "configuration": { - "if": ["---#if"], - "else": ["---#else"], - "elseif": ["---#elseif", "---#elif"], - "endif": ["---#endif"], - "trim": "true", - "wholeLine": "true" - } - } - ] - }, - "**/*.csproj": { - "operations": [{ - "type": "conditional", - "configuration": { - "actionableIf": ["