Skip to content

Commit 8475a80

Browse files
committed
chore: Migrate dotnet-sdk-internal into dotnet-core
Relocate the LaunchDarkly.InternalSdk package from the standalone dotnet-sdk-internal repo into pkgs/shared/internal, following the pattern used for dotnet-sdk-common (#105) and its follow-up corrections (#117/#121/#123/#124). - Copy src/ and test/ verbatim. Preserve the existing strong-name signing key: the same S3 source (launchdarkly-releaser/dotnet/LaunchDarkly.snk) is used, so the assembly public-key token is unchanged. - Add monorepo release wiring: github_actions.env, docfx.json, CI workflow (server-shared-internal.yml), release-please config + manifest (seeded at the current version 3.8.0), and release.yml / release-please.yml entries. - No consumer changes; the server/client SDKs keep their published LaunchDarkly.InternalSdk PackageReference (bumping that is a follow-up). SDK-2572
1 parent 6f1e65d commit 8475a80

72 files changed

Lines changed: 8661 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release-please.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
package-sdk-server-telemetry-released: ${{ steps.release.outputs['pkgs/telemetry--release_created'] }}
2323
package-shared-common-released: ${{ steps.release.outputs['pkgs/shared/common--release_created'] }}
2424
package-shared-common-json-net-released: ${{ steps.release.outputs['pkgs/shared/common-json-net--release_created'] }}
25+
package-shared-internal-released: ${{ steps.release.outputs['pkgs/shared/internal--release_created'] }}
2526

2627
steps:
2728
- uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0
@@ -145,3 +146,16 @@ jobs:
145146
package_path: pkgs/shared/common-json-net
146147
dry_run: false
147148
generate_provenance: true
149+
150+
release-shared-internal:
151+
needs: ['release-please']
152+
permissions:
153+
id-token: write
154+
contents: write
155+
attestations: write
156+
if: ${{ needs.release-please.outputs.package-shared-internal-released == 'true'}}
157+
uses: ./.github/workflows/release.yml
158+
with:
159+
package_path: pkgs/shared/internal
160+
dry_run: false
161+
generate_provenance: true

.github/workflows/release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ on:
1616
- pkgs/telemetry
1717
- pkgs/shared/common
1818
- pkgs/shared/common-json-net
19+
- pkgs/shared/internal
1920
dry_run:
2021
description: 'Is this a dry run. If so no package will be published.'
2122
type: boolean
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: LaunchDarkly.InternalSdk CI
2+
3+
on:
4+
push:
5+
branches: [ main, 'feat/**' ]
6+
paths:
7+
- '.github/**'
8+
- 'global.example.json'
9+
- 'pkgs/shared/internal/**'
10+
- '!**.md'
11+
pull_request:
12+
branches: [ main, 'feat/**' ]
13+
paths:
14+
- '.github/**'
15+
- 'global.example.json'
16+
- 'pkgs/shared/internal/**'
17+
- '!**.md'
18+
19+
jobs:
20+
build-and-test:
21+
strategy:
22+
matrix:
23+
include:
24+
- os: ubuntu-latest
25+
framework: netstandard2.0
26+
test_framework: net8.0
27+
- os: windows-latest
28+
framework: net462
29+
test_framework: net462
30+
31+
runs-on: ${{ matrix.os }}
32+
33+
defaults:
34+
run:
35+
shell: ${{ matrix.os == 'windows-latest' && 'powershell' || 'bash' }}
36+
37+
steps:
38+
- uses: actions/checkout@v4
39+
40+
- name: Setup Env from project's Env file
41+
shell: bash
42+
run: echo "$(cat pkgs/shared/internal/github_actions.env)" >> $GITHUB_ENV
43+
44+
- uses: ./.github/actions/ci
45+
with:
46+
project_file: ${{ env.PROJECT_FILE }}
47+
test_project_file: ${{ env.TEST_PROJECT_FILE }}
48+
target_test_framework: ${{ matrix.test_framework }}

.release-please-manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
"pkgs/telemetry": "1.5.1",
88
"pkgs/sdk/server-ai": "0.11.0",
99
"pkgs/shared/common": "7.2.0",
10-
"pkgs/shared/common-json-net": "7.0.2"
10+
"pkgs/shared/common-json-net": "7.0.2",
11+
"pkgs/shared/internal": "3.8.0"
1112
}

DotnetCore.sln

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "repo-docs", "repo-docs", "{
8484
LICENSE = LICENSE
8585
EndProjectSection
8686
EndProject
87+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "internal", "internal", "{B19B9B2A-CCE2-4FA7-824E-7140F2E13E87}"
88+
EndProject
89+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.InternalSdk", "pkgs\shared\internal\src\LaunchDarkly.InternalSdk.csproj", "{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}"
90+
EndProject
91+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.InternalSdk.Tests", "pkgs\shared\internal\test\LaunchDarkly.InternalSdk.Tests.csproj", "{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}"
92+
EndProject
8793
Global
8894
GlobalSection(SolutionConfigurationPlatforms) = preSolution
8995
Debug|Any CPU = Debug|Any CPU
@@ -121,6 +127,9 @@ Global
121127
{561F6F3D-09C5-470A-83AC-F0E97BAD609B} = {EF541D97-2C23-4FB8-BD87-ADFDF0FF83F3}
122128
{DE321396-6459-4C02-AF61-1A2677A7CB65} = {FF3153CA-F727-4666-BA1E-5459BE34FBAB}
123129
{A10B580F-D937-4EA8-8CF8-4F130FBF6C16} = {822D49A6-1DF2-49BB-A3C0-15821ED718D6}
130+
{B19B9B2A-CCE2-4FA7-824E-7140F2E13E87} = {E2905C95-49E1-4194-88DD-B30AA68EEF98}
131+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2} = {B19B9B2A-CCE2-4FA7-824E-7140F2E13E87}
132+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2} = {B19B9B2A-CCE2-4FA7-824E-7140F2E13E87}
124133
EndGlobalSection
125134
GlobalSection(ProjectConfigurationPlatforms) = postSolution
126135
{2D61D2EC-8D04-46E9-9E1B-1E029341F318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -249,5 +258,17 @@ Global
249258
{A10B580F-D937-4EA8-8CF8-4F130FBF6C16}.Release|Any CPU.Build.0 = Release|Any CPU
250259
{A10B580F-D937-4EA8-8CF8-4F130FBF6C16}.DebugLocalReferences|Any CPU.ActiveCfg = DebugLocalReferences|Any CPU
251260
{A10B580F-D937-4EA8-8CF8-4F130FBF6C16}.DebugLocalReferences|Any CPU.Build.0 = DebugLocalReferences|Any CPU
261+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
262+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
263+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}.DebugLocalReferences|Any CPU.ActiveCfg = Debug|Any CPU
264+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}.DebugLocalReferences|Any CPU.Build.0 = Debug|Any CPU
265+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
266+
{BF4400E1-3831-4E28-AB05-F9B93FF9E2B2}.Release|Any CPU.Build.0 = Release|Any CPU
267+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
268+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
269+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}.DebugLocalReferences|Any CPU.ActiveCfg = Debug|Any CPU
270+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}.DebugLocalReferences|Any CPU.Build.0 = Debug|Any CPU
271+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
272+
{F66CD4A8-9DE2-498B-BBA2-B24E9955D1F2}.Release|Any CPU.Build.0 = Release|Any CPU
252273
EndGlobalSection
253274
EndGlobal

pkgs/shared/internal/CHANGELOG.md

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
# Change log
2+
3+
All notable changes to `LaunchDarkly.InternalSdk` will be documented in this file. For full release notes for the projects that depend on this project, see their respective changelogs. This file describes changes only to the common code. This project adheres to [Semantic Versioning](http://semver.org).
4+
5+
## [3.8.0](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.7.0...3.8.0) (2026-06-16)
6+
7+
8+
### Features
9+
10+
* Update target frameworks to net8.0 ([#69](https://github.com/launchdarkly/dotnet-sdk-internal/issues/69)) ([235c52f](https://github.com/launchdarkly/dotnet-sdk-internal/commit/235c52f7e83db46590b6d4ac81333e555d7e876d))
11+
12+
## [3.7.0](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.6.1...3.7.0) (2026-06-08)
13+
14+
15+
### Features
16+
17+
* add optional support for per-context summary events ([#65](https://github.com/launchdarkly/dotnet-sdk-internal/issues/65)) ([d835d08](https://github.com/launchdarkly/dotnet-sdk-internal/commit/d835d08d062d6d71acebc6b572d112eed976a508))
18+
19+
## [3.6.1](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.6.0...3.6.1) (2026-04-09)
20+
21+
22+
### Bug Fixes
23+
24+
* Update CommonSdk to 7.2.0 ([#60](https://github.com/launchdarkly/dotnet-sdk-internal/issues/60)) ([047a867](https://github.com/launchdarkly/dotnet-sdk-internal/commit/047a867705a4bb4fd0f9cad99e9a51ed733952ef))
25+
26+
## [3.6.0](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.5.5...3.6.0) (2025-12-16)
27+
28+
29+
### Features
30+
31+
* adds headers to UnsuccessfulResponseException ([#52](https://github.com/launchdarkly/dotnet-sdk-internal/issues/52)) ([3cca2ff](https://github.com/launchdarkly/dotnet-sdk-internal/commit/3cca2ff29e779def2fe75770dfdd13b94433742f))
32+
33+
## [3.5.5](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.5.4...3.5.5) (2025-09-26)
34+
35+
36+
### Bug Fixes
37+
38+
* Update CommonSdk to 7.1.1 ([#50](https://github.com/launchdarkly/dotnet-sdk-internal/issues/50)) ([b8d57d3](https://github.com/launchdarkly/dotnet-sdk-internal/commit/b8d57d30032a26fd3b034dcea00e24af4cc3be68))
39+
40+
## [3.5.4](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.5.3...3.5.4) (2025-08-22)
41+
42+
43+
### Bug Fixes
44+
45+
* Prevent invalid strings from being part of format value ([#46](https://github.com/launchdarkly/dotnet-sdk-internal/issues/46)) ([b4c772e](https://github.com/launchdarkly/dotnet-sdk-internal/commit/b4c772e059a1f67c8c94c5c39dbb44ca31c2850e))
46+
47+
## [3.5.3](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.5.2...3.5.3) (2025-07-10)
48+
49+
50+
### Bug Fixes
51+
52+
* Relax common dependency ([#44](https://github.com/launchdarkly/dotnet-sdk-internal/issues/44)) ([66913b1](https://github.com/launchdarkly/dotnet-sdk-internal/commit/66913b15b173cbb4eb4a55133989a5f3c21c6781))
53+
54+
## [3.5.2](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.5.1...3.5.2) (2025-06-24)
55+
56+
57+
### Bug Fixes
58+
59+
* Address ARM64 optimization throwing exceptions ([#42](https://github.com/launchdarkly/dotnet-sdk-internal/issues/42)) ([bac4833](https://github.com/launchdarkly/dotnet-sdk-internal/commit/bac4833a526b9f63025a0c864ce41514e402718c))
60+
61+
## [3.5.1](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.5.0...3.5.1) (2025-05-30)
62+
63+
64+
### Bug Fixes
65+
66+
* conditionalize immutable dependency ([#40](https://github.com/launchdarkly/dotnet-sdk-internal/issues/40)) ([3ab529d](https://github.com/launchdarkly/dotnet-sdk-internal/commit/3ab529d730fcbcc0fd5614d96997929b2e4644e1))
67+
68+
## [3.5.0](https://github.com/launchdarkly/dotnet-sdk-internal/compare/3.4.0...3.5.0) (2025-05-02)
69+
70+
71+
### Features
72+
73+
* Inline context for custom and migrations op events ([#34](https://github.com/launchdarkly/dotnet-sdk-internal/issues/34)) ([7013bbe](https://github.com/launchdarkly/dotnet-sdk-internal/commit/7013bbe95b3be44ca277f311a84e195e1adfd41d))
74+
75+
## [3.4.0] - 2024-03-13
76+
### Changed:
77+
- Redact anonymous attributes within feature events
78+
- Always inline contexts for feature events
79+
80+
## [3.3.1] - 2023-10-17
81+
### Changed:
82+
- Updated Dotnet Common to 7.0.0 which contains nullability of IEnvironmentReporter properties.
83+
84+
## [3.3.0] - 2023-10-10
85+
### Changed:
86+
- Updated LaunchDarkly.CommonSdk to 6.2.0 to incorporate changes.
87+
88+
## [3.2.0] - 2023-10-10
89+
### Added:
90+
- Add common support for technology migrations.
91+
- HttpProperties now supports WithApplicationTags.
92+
93+
## [3.1.2] - 2023-04-21
94+
### Changed:
95+
- Updated `LaunchDarkly.CommonSdk` to `6.0.1`.
96+
97+
## [3.1.1] - 2023-03-08
98+
### Fixed:
99+
- Fixed an issue where calling `FlushAndWait` with `TimeSpan.Zero` would never complete if there were no events to flush.
100+
101+
## [3.1.0] - 2022-12-06
102+
### Added:
103+
- In `EventProcessor`, `FlushAndWait` and `FlushAndWaitAsync`.
104+
105+
## [3.0.0] - 2022-12-01
106+
This major version release of `LaunchDarkly.InternalSdk` corresponds to the upcoming v7.0.0 release of the LaunchDarkly server-side .NET SDK (`LaunchDarkly.ServerSdk`) and the v3.0.0 release of the LaunchDarkly client-side .NET SDK (`LaunchDarkly.ClientSdk`), and cannot be used with earlier SDK versions.
107+
108+
### Changed:
109+
- .NET Core 2.1, .NET Framework 4.5.2, .NET Framework 4.6.1, and .NET 5.0 are now unsupported. The minimum platform versions are now .NET Core 3.1, .NET Framework 4.6.2, .NET 6.0, and .NET Standard 2.0.
110+
- Events now use the `Context` type rather than `User`.
111+
- Private attributes can now be designated with the `AttributeRef` type, which allows redaction of either a full attribute or a property within a JSON object value.
112+
- There is a new JSON schema for analytics events. The HTTP headers for event payloads now report the schema version as 4.
113+
- There is no longer a dependency on `LaunchDarkly.JsonStream`. This package existed because some platforms did not support the `System.Text.Json` API, but that is no longer the case and the SDK now uses `System.Text.Json` directly for all of its JSON operations.
114+
- `EventSender` now takes a byte array instead of a string for the event payload, so we can serialize JSON data directly to UTF8.
115+
116+
### Removed:
117+
- All alias event functionality
118+
- `EventsConfiguration.InlineUsersInEvents`
119+
120+
## [2.3.2] - 2022-02-02
121+
### Changed:
122+
- Updated `LaunchDarkly.CommonSdk` dependency to latest release.
123+
124+
## [2.3.1] - 2022-01-28
125+
### Fixed:
126+
- In analytics event data, `index` events were showing a `contextKind` property for anonymous users. That type of event should not have that property; LaunchDarkly would ignore it.
127+
128+
## [2.3.0] - 2021-10-27
129+
### Added:
130+
- `HttpProperties.NewHttpMessageHandler()`
131+
132+
## [2.2.0] - 2021-10-25
133+
### Added:
134+
- In `TaskExecutor`, there is a new parameter for controlling how events are dispatched that will be used by the client-side .NET SDK.
135+
- In `LaunchDarkly.Sdk.Internal.Events`, new types `DiagnosticStoreBase` and `DiagnosticConfigProperties` contain logic that was previously only in `LaunchDarkly.ServerSdk` and will now be shared by `LaunchDarkly.ClientSdk`.
136+
137+
### Changed:
138+
- Updated `LaunchDarkly.CommonSdk` to 5.4.0.
139+
140+
## [2.1.1] - 2021-10-05
141+
### Changed:
142+
- Updated dependency versions to keep in sync with dependencies of `LaunchDarkly.ServerSdk`.
143+
144+
## [2.1.0] - 2021-09-21
145+
### Added:
146+
- Made `StateMonitor` and `TaskExecutor` public; they had mistakenly been marked internal.
147+
148+
## [2.0.0] - 2021-09-21
149+
### Added:
150+
- `StateMonitor`, `TaskExecutor`.
151+
152+
### Changed:
153+
- Moved `AtomicBoolean` and `AsyncUtils` into new namespace `LaunchDarkly.Sdk.Internal.Concurrent`.
154+
155+
### Removed:
156+
- `MultiNotifier` (obviated by `StateMonitor`).
157+
158+
## [1.1.2] - 2021-06-07
159+
### Fixed:
160+
- Updated minimum `LaunchDarkly.CommonSdk` version to latest patch, to exclude versions of `LaunchDarkly.JsonStream` with a known parsing bug.
161+
162+
## [1.1.1] - 2021-05-07
163+
### Fixed:
164+
- `HttpProperties.ConnectTimeout` now really sets the TCP connect timeout, if the platform is .NET Core or .NET 5.0. Other platforms don't support connect timeouts and will continue to ignore this value.
165+
166+
## [1.1.0] - 2021-04-27
167+
### Added:
168+
- `UriExtensions`
169+
170+
### Fixed:
171+
- Improved coverage and reliability of HTTP tests using `LaunchDarkly.TestHelpers`.
172+
173+
## [1.0.0] - 2021-02-08
174+
Initial release of this package, to be used in `LaunchDarkly.ServerSdk` 6.0 and `LaunchDarkly.XamarinSdk` 2.0.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Contributing to the LaunchDarkly SDK .NET Internal Common Code
2+
3+
LaunchDarkly has published an [SDK contributor's guide](https://docs.launchdarkly.com/docs/sdk-contributors-guide) that provides a detailed explanation of how our SDKs work. See below for additional information on how to contribute to this SDK.
4+
5+
## Submitting bug reports and feature requests
6+
7+
In general, issues should be filed in the issue trackers for the [.NET server-side SDK](https://github.com/launchdarkly/dotnet-server-sdk/issues) or the [Xamarin client-side SDK](https://github.com/launchdarkly/xamarin-client-sdk/issues) rather than in this repository, unless you have a specific implementation issue regarding the code in this repository.
8+
9+
## Submitting pull requests
10+
11+
We encourage pull requests and other contributions from the community. Before submitting pull requests, ensure that all temporary or unintended code is removed. Don't worry about adding reviewers to the pull request; the LaunchDarkly SDK team will add themselves. The SDK team will acknowledge all pull requests within two business days.
12+
13+
## Build instructions
14+
15+
### Prerequisites
16+
17+
To set up your build time environment, you must [download .NET and follow the instructions](https://dotnet.microsoft.com/download). Using the highest supported .NET version is recommended, since newer SDKs are capable of building for older target frameworks but not vice versa.
18+
19+
### Building
20+
21+
To install all required packages:
22+
23+
```
24+
dotnet restore
25+
```
26+
27+
Then, to build the library without running any tests:
28+
29+
```
30+
dotnet build src/LaunchDarkly.InternalSdk
31+
```
32+
33+
### Testing
34+
35+
To run all unit tests:
36+
37+
```
38+
dotnet test test/LaunchDarkly.InternalSdk.Tests/LaunchDarkly.InternalSdk.Tests.csproj
39+
```
40+
41+
Note that the unit tests can only be run in Debug configuration. There is an `InternalsVisibleTo` directive that allows the test code to access internal members of the library, and assembly strong-naming in the Release configuration interferes with this.
160 Bytes
Binary file not shown.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 15
4+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.InternalSdk", "src\LaunchDarkly.InternalSdk.csproj", "{E9EA3EA1-D5CD-46CE-9E67-A8CDA4C292F0}"
5+
EndProject
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaunchDarkly.InternalSdk.Tests", "test\LaunchDarkly.InternalSdk.Tests.csproj", "{DA1B9706-BD2B-4956-8074-3B4686C008AB}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{E9EA3EA1-D5CD-46CE-9E67-A8CDA4C292F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{E9EA3EA1-D5CD-46CE-9E67-A8CDA4C292F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{E9EA3EA1-D5CD-46CE-9E67-A8CDA4C292F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{E9EA3EA1-D5CD-46CE-9E67-A8CDA4C292F0}.Release|Any CPU.Build.0 = Release|Any CPU
18+
{DA1B9706-BD2B-4956-8074-3B4686C008AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19+
{DA1B9706-BD2B-4956-8074-3B4686C008AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
20+
{DA1B9706-BD2B-4956-8074-3B4686C008AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
21+
{DA1B9706-BD2B-4956-8074-3B4686C008AB}.Release|Any CPU.Build.0 = Release|Any CPU
22+
EndGlobalSection
23+
EndGlobal

0 commit comments

Comments
 (0)