diff --git a/.build/automation/stages/compliance.yml b/.build/automation/stages/compliance.yml
new file mode 100644
index 0000000..802e194
--- /dev/null
+++ b/.build/automation/stages/compliance.yml
@@ -0,0 +1,31 @@
+stages:
+ - template: security/full/v1.yml@templates
+ parameters:
+ windowsPoolName: '$(HostedWinVS2019)'
+ windowsImageOverride: 'none'
+ stageDependsOn: ['validate']
+ scanArtifacts: ['Symbols']
+ antiMalwareEnabled: true
+ binSkimEnabled: true
+ credScanEnabled: true
+ credScanSuppressionFile: '$(System.DefaultWorkingDirectory)\.config\CredScanSuppressions.json'
+ sourceGdnSuppressionFile: '$(System.DefaultWorkingDirectory)\.config\guardian\source.gdnsuppress'
+ tsaConfigFile: '$(System.DefaultWorkingDirectory)\.build\automation\tsaoptions-v2.json'
+ policheckLocScanEnabled: true
+ policheckExclusionFilesFolder: '$(System.DefaultWorkingDirectory)\.config\policheck'
+ policheckSrcScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckChsScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckChtScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckCsyScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckDeuScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckEsnScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckFraScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckItaScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckJpnScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckKorScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckPlkScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckPtbScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckRusScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckTrkScanFolder: '$(System.DefaultWorkingDirectory)'
+ policheckGdnSuppressionFilesFolder: '$(System.DefaultWorkingDirectory)\.config\guardian'
+ apiScanSoftwareName: 'Xamarin.PropertyEditing'
diff --git a/.build/automation/stages/validate.yml b/.build/automation/stages/validate.yml
index e6942cb..c2f8c37 100644
--- a/.build/automation/stages/validate.yml
+++ b/.build/automation/stages/validate.yml
@@ -24,7 +24,14 @@ stages:
inputs:
solution: build.proj
msbuildVersion: "15.0"
- msbuildArguments: '/restore /p:Release=true /t:Build'
+ msbuildArguments: '/restore /p:Release=true /p:Out=$(Build.ArtifactStagingDirectory) /t:Build'
+
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifacts'
+ inputs:
+ PathtoPublish: '$(Build.ArtifactStagingDirectory)'
+ ArtifactName: 'Symbols'
+ condition: succeededOrFailed()
- task: MSBuild@1
displayName: 'Run Tests'
diff --git a/.config/CredScanSuppressions.json b/.config/CredScanSuppressions.json
index c02bb2d..0e52eb4 100644
--- a/.config/CredScanSuppressions.json
+++ b/.config/CredScanSuppressions.json
@@ -1,6 +1,4 @@
{
"tool": "Credential Scanner",
- "suppressions": [
-
- ]
-}
\ No newline at end of file
+ "suppressions": []
+}
diff --git a/.config/Policheck/Rule-zh-all.mdb b/.config/Policheck/Rule-zh-all.mdb
deleted file mode 100644
index edd7154..0000000
Binary files a/.config/Policheck/Rule-zh-all.mdb and /dev/null differ
diff --git a/.config/Policheck/UserExclusion.xml b/.config/Policheck/UserExclusion.xml
deleted file mode 100644
index b88ce30..0000000
--- a/.config/Policheck/UserExclusion.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- .RESX
-
-
-
-
\ No newline at end of file
diff --git a/.config/guardian/CHS.gdnsuppress b/.config/guardian/CHS.gdnsuppress
new file mode 100644
index 0000000..ba17c28
--- /dev/null
+++ b/.config/guardian/CHS.gdnsuppress
@@ -0,0 +1,11 @@
+{
+ "version": "latest",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2022-11-15 05:29:22Z",
+ "lastUpdatedDate": "2022-11-15 05:29:22Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/CHT.gdnsuppress b/.config/guardian/CHT.gdnsuppress
new file mode 100644
index 0000000..aaaa5fe
--- /dev/null
+++ b/.config/guardian/CHT.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:42Z",
+ "lastUpdatedDate": "2023-11-16 06:08:42Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/CSY.gdnsuppress b/.config/guardian/CSY.gdnsuppress
new file mode 100644
index 0000000..bb4fbbe
--- /dev/null
+++ b/.config/guardian/CSY.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:41Z",
+ "lastUpdatedDate": "2023-11-16 06:08:41Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/DEU.gdnsuppress b/.config/guardian/DEU.gdnsuppress
new file mode 100644
index 0000000..4881483
--- /dev/null
+++ b/.config/guardian/DEU.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:39Z",
+ "lastUpdatedDate": "2023-11-16 06:08:39Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/ESN.gdnsuppress b/.config/guardian/ESN.gdnsuppress
new file mode 100644
index 0000000..b4710a2
--- /dev/null
+++ b/.config/guardian/ESN.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:48Z",
+ "lastUpdatedDate": "2023-11-16 06:08:48Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/FRA.gdnsuppress b/.config/guardian/FRA.gdnsuppress
new file mode 100644
index 0000000..c3f7cd9
--- /dev/null
+++ b/.config/guardian/FRA.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:44Z",
+ "lastUpdatedDate": "2023-11-16 06:08:44Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/ITA.gdnsuppress b/.config/guardian/ITA.gdnsuppress
new file mode 100644
index 0000000..bb4fbbe
--- /dev/null
+++ b/.config/guardian/ITA.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:41Z",
+ "lastUpdatedDate": "2023-11-16 06:08:41Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/JPN.gdnsuppress b/.config/guardian/JPN.gdnsuppress
new file mode 100644
index 0000000..09c5953
--- /dev/null
+++ b/.config/guardian/JPN.gdnsuppress
@@ -0,0 +1,11 @@
+{
+ "version": "latest",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2022-11-30 02:05:20Z",
+ "lastUpdatedDate": "2022-11-30 02:05:20Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/KOR.gdnsuppress b/.config/guardian/KOR.gdnsuppress
new file mode 100644
index 0000000..c3f7cd9
--- /dev/null
+++ b/.config/guardian/KOR.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:44Z",
+ "lastUpdatedDate": "2023-11-16 06:08:44Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/PLK.gdnsuppress b/.config/guardian/PLK.gdnsuppress
new file mode 100644
index 0000000..1425834
--- /dev/null
+++ b/.config/guardian/PLK.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:46Z",
+ "lastUpdatedDate": "2023-11-16 06:08:46Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/PTB.gdnsuppress b/.config/guardian/PTB.gdnsuppress
new file mode 100644
index 0000000..1a057ef
--- /dev/null
+++ b/.config/guardian/PTB.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:47Z",
+ "lastUpdatedDate": "2023-11-16 06:08:47Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/RUS.gdnsuppress b/.config/guardian/RUS.gdnsuppress
new file mode 100644
index 0000000..aaaa5fe
--- /dev/null
+++ b/.config/guardian/RUS.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:42Z",
+ "lastUpdatedDate": "2023-11-16 06:08:42Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/TRK.gdnsuppress b/.config/guardian/TRK.gdnsuppress
new file mode 100644
index 0000000..669fcce
--- /dev/null
+++ b/.config/guardian/TRK.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:56Z",
+ "lastUpdatedDate": "2023-11-16 06:08:56Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/guardian/source.gdnsuppress b/.config/guardian/source.gdnsuppress
new file mode 100644
index 0000000..4881483
--- /dev/null
+++ b/.config/guardian/source.gdnsuppress
@@ -0,0 +1,16 @@
+{
+ "hydrated": false,
+ "properties": {
+ "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions",
+ "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
+ },
+ "version": "1.0.0",
+ "suppressionSets": {
+ "default": {
+ "name": "default",
+ "createdDate": "2023-11-16 06:08:39Z",
+ "lastUpdatedDate": "2023-11-16 06:08:39Z"
+ }
+ },
+ "results": {}
+}
diff --git a/.config/Policheck/UserExclusion.zh-hans.xml b/.config/policheck/PolicheckExclusions.CHS.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.zh-hans.xml
rename to .config/policheck/PolicheckExclusions.CHS.xml
index eefd63b..364589f 100644
--- a/.config/Policheck/UserExclusion.zh-hans.xml
+++ b/.config/policheck/PolicheckExclusions.CHS.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.zh-hant.xml b/.config/policheck/PolicheckExclusions.CHT.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.zh-hant.xml
rename to .config/policheck/PolicheckExclusions.CHT.xml
index e7cfe92..fd90527 100644
--- a/.config/Policheck/UserExclusion.zh-hant.xml
+++ b/.config/policheck/PolicheckExclusions.CHT.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.cs.xml b/.config/policheck/PolicheckExclusions.CSY.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.cs.xml
rename to .config/policheck/PolicheckExclusions.CSY.xml
index c02b38e..2d1c6ae 100644
--- a/.config/Policheck/UserExclusion.cs.xml
+++ b/.config/policheck/PolicheckExclusions.CSY.xml
@@ -14,4 +14,4 @@
RESOURCES.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.de.xml b/.config/policheck/PolicheckExclusions.DEU.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.de.xml
rename to .config/policheck/PolicheckExclusions.DEU.xml
index 82fcabc..3873f93 100644
--- a/.config/Policheck/UserExclusion.de.xml
+++ b/.config/policheck/PolicheckExclusions.DEU.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.es.xml b/.config/policheck/PolicheckExclusions.ESN.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.es.xml
rename to .config/policheck/PolicheckExclusions.ESN.xml
index 55dcdff..03773a9 100644
--- a/.config/Policheck/UserExclusion.es.xml
+++ b/.config/policheck/PolicheckExclusions.ESN.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.fr.xml b/.config/policheck/PolicheckExclusions.FRA.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.fr.xml
rename to .config/policheck/PolicheckExclusions.FRA.xml
index 4e3837d..5b46cf2 100644
--- a/.config/Policheck/UserExclusion.fr.xml
+++ b/.config/policheck/PolicheckExclusions.FRA.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.it.xml b/.config/policheck/PolicheckExclusions.ITA.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.it.xml
rename to .config/policheck/PolicheckExclusions.ITA.xml
index 166fdc5..498f0ae 100644
--- a/.config/Policheck/UserExclusion.it.xml
+++ b/.config/policheck/PolicheckExclusions.ITA.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.ja.xml b/.config/policheck/PolicheckExclusions.JPN.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.ja.xml
rename to .config/policheck/PolicheckExclusions.JPN.xml
index fa66562..e9e4785 100644
--- a/.config/Policheck/UserExclusion.ja.xml
+++ b/.config/policheck/PolicheckExclusions.JPN.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.ko.xml b/.config/policheck/PolicheckExclusions.KOR.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.ko.xml
rename to .config/policheck/PolicheckExclusions.KOR.xml
index 718ca73..6cd348d 100644
--- a/.config/Policheck/UserExclusion.ko.xml
+++ b/.config/policheck/PolicheckExclusions.KOR.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.pl.xml b/.config/policheck/PolicheckExclusions.PLK.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.pl.xml
rename to .config/policheck/PolicheckExclusions.PLK.xml
index bfb41fb..98381a7 100644
--- a/.config/Policheck/UserExclusion.pl.xml
+++ b/.config/policheck/PolicheckExclusions.PLK.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.pt-br.xml b/.config/policheck/PolicheckExclusions.PTB.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.pt-br.xml
rename to .config/policheck/PolicheckExclusions.PTB.xml
index e85f0c6..e47419f 100644
--- a/.config/Policheck/UserExclusion.pt-br.xml
+++ b/.config/policheck/PolicheckExclusions.PTB.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.ru.xml b/.config/policheck/PolicheckExclusions.RUS.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.ru.xml
rename to .config/policheck/PolicheckExclusions.RUS.xml
index 5ff0cf1..c326dac 100644
--- a/.config/Policheck/UserExclusion.ru.xml
+++ b/.config/policheck/PolicheckExclusions.RUS.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.tr.xml b/.config/policheck/PolicheckExclusions.TRK.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.tr.xml
rename to .config/policheck/PolicheckExclusions.TRK.xml
index e749d4a..1b7c456 100644
--- a/.config/Policheck/UserExclusion.tr.xml
+++ b/.config/policheck/PolicheckExclusions.TRK.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/Policheck/UserExclusion.en.xml b/.config/policheck/PolicheckExclusions.xml
similarity index 98%
rename from .config/Policheck/UserExclusion.en.xml
rename to .config/policheck/PolicheckExclusions.xml
index 4e3837d..5b46cf2 100644
--- a/.config/Policheck/UserExclusion.en.xml
+++ b/.config/policheck/PolicheckExclusions.xml
@@ -14,4 +14,4 @@
RESOURCES.CS.RESX|RESOURCES.DE.RESX|RESOURCES.ES.RESX|RESOURCES.FR.RESX|RESOURCES.IT.RESX|RESOURCES.JA.RESX|RESOURCES.KO.RESX|RESOURCES.PL.RESX|RESOURCES.PT-BR.RESX|RESOURCES.RU.RESX|RESOURCES.TR.RESX|RESOURCES.ZH-HANS.RESX|RESOURCES.ZH-HANT.RESX
-
\ No newline at end of file
+
diff --git a/.config/tsaoptions-v2.json b/.config/tsaoptions-v2.json
new file mode 100644
index 0000000..8be6063
--- /dev/null
+++ b/.config/tsaoptions-v2.json
@@ -0,0 +1,14 @@
+{
+ "codebaseName": "Xamarin.PropertyEditing_main",
+ "notificationAliases": [
+ "vscx-tools-ui@microsoft.com"
+ ],
+ "codebaseAdmins": [
+ "REDMOND\\vsengxamarin"
+ ],
+ "instanceUrl": "https://devdiv.visualstudio.com/",
+ "projectName": "DevDiv",
+ "areaPath": "DevDiv\\VS Client - Tools\\UI",
+ "iterationPath": "DevDiv",
+ "allTools": true
+}
diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml
index 0a713e9..8e58f50 100644
--- a/azure-pipelines.yaml
+++ b/azure-pipelines.yaml
@@ -23,7 +23,7 @@ variables:
stages:
- template: .build/automation/stages/validate.yml
- - template: .build/automation/stages/security_compliance.yml
+ - template: .build/automation/stages/compliance.yml
# The following Stages are dependent on the OneLocBuild task which is not available in the Xamarin Public AzDevops instance
- template: .build/automation/stages/localization-handoff.yml # Process outgoing strings [Localization Handoff]
- template: .build/automation/stages/localization-handback.yml # Process incoming translations and Create PR to main [Localization Handback]