Skip to content

Commit ae9c8dd

Browse files
msohailhussainMichael Ng
authored andcommitted
ci(.net20): Adding net standard 2.0 support (#187)
1 parent ecac895 commit ae9c8dd

File tree

6 files changed

+337
-0
lines changed

6 files changed

+337
-0
lines changed

.travis.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,22 @@ jobs:
6666
- pip install --user awscli
6767
# upload dll build artifacts to s3 with -unsigned suffix
6868
- ([ ${TRAVIS_BRANCH} = "$RELEASE_BRANCH" ] && [ ${TRAVIS_EVENT_TYPE} = "push" ]) && (AWS_ACCESS_KEY_ID=$OFTA_KEY AWS_SECRET_ACCESS_KEY=$OFTA_SECRET AWS_DEFAULT_REGION=$OFTA_REGION aws s3 cp ./OptimizelySDK.NetStandard16/bin/Release/netstandard1.6/OptimizelySDK.NetStandard16.dll s3://optly-fs-travisci-artifacts/${TRAVIS_REPO_SLUG}/${TRAVIS_BUILD_NUMBER}/${TRAVIS_JOB_NUMBER}/OptimizelySDK.NetStandard16.dll-unsigned)
69+
70+
- stage: 'NetStandard20'
71+
language: csharp
72+
# dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189
73+
dist: trusty
74+
mono: none
75+
dotnet: 2.1.502
76+
install:
77+
- dotnet restore OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj
78+
addons:
79+
srcclr: true
80+
script:
81+
# strongname signing is taken care of in build step
82+
- dotnet build OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$TRAVIS_BUILD_DIR/keypair.snk -c Release
83+
# TODO: no dotnet test yet for NetStandard16
84+
after_success:
85+
- pip install --user awscli
86+
# upload dll build artifacts to s3 with -unsigned suffix
87+
- ([ ${TRAVIS_BRANCH} = "$RELEASE_BRANCH" ] && [ ${TRAVIS_EVENT_TYPE} = "push" ]) && (AWS_ACCESS_KEY_ID=$OFTA_KEY AWS_SECRET_ACCESS_KEY=$OFTA_SECRET AWS_DEFAULT_REGION=$OFTA_REGION aws s3 cp ./OptimizelySDK.NetStandard20/bin/Release/netstandard2.0/OptimizelySDK.NetStandard20.dll s3://optly-fs-travisci-artifacts/${TRAVIS_REPO_SLUG}/${TRAVIS_BUILD_NUMBER}/${TRAVIS_JOB_NUMBER}/OptimizelySDK.NetStandard20.dll-unsigned)
Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<ReleaseVersion>1.2.1</ReleaseVersion>
6+
<AssemblyOriginatorKeyFile>..\keypair.snk</AssemblyOriginatorKeyFile>
7+
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
8+
</PropertyGroup>
9+
<ItemGroup>
10+
<Compile Include="..\OptimizelySDK\IOptimizely.cs">
11+
<Link>IOptimizely.cs</Link>
12+
</Compile>
13+
<Compile Include="..\OptimizelySDK\Optimizely.cs">
14+
<Link>Optimizely.cs</Link>
15+
</Compile>
16+
<Compile Include="..\OptimizelySDK\OptimizelyFactory.cs">
17+
<Link>OptimizelyFactory.cs</Link>
18+
</Compile>
19+
<Compile Include="..\OptimizelySDK\ProjectConfig.cs">
20+
<Link>ProjectConfig.cs</Link>
21+
</Compile>
22+
<Compile Include="..\OptimizelySDK\AudienceConditions\AndCondition.cs">
23+
<Link>AudienceConditions\AndCondition.cs</Link>
24+
</Compile>
25+
<Compile Include="..\OptimizelySDK\AudienceConditions\AudienceIdCondition.cs">
26+
<Link>AudienceConditions\AudienceIdCondition.cs</Link>
27+
</Compile>
28+
<Compile Include="..\OptimizelySDK\AudienceConditions\BaseCondition.cs">
29+
<Link>AudienceConditions\BaseCondition.cs</Link>
30+
</Compile>
31+
<Compile Include="..\OptimizelySDK\AudienceConditions\EmptyCondition.cs">
32+
<Link>AudienceConditions\EmptyCondition.cs</Link>
33+
</Compile>
34+
<Compile Include="..\OptimizelySDK\AudienceConditions\ICondition.cs">
35+
<Link>AudienceConditions\ICondition.cs</Link>
36+
</Compile>
37+
<Compile Include="..\OptimizelySDK\AudienceConditions\NotCondition.cs">
38+
<Link>AudienceConditions\NotCondition.cs</Link>
39+
</Compile>
40+
<Compile Include="..\OptimizelySDK\AudienceConditions\OrCondition.cs">
41+
<Link>AudienceConditions\OrCondition.cs</Link>
42+
</Compile>
43+
<Compile Include="..\OptimizelySDK\Bucketing\Bucketer.cs">
44+
<Link>Bucketing\Bucketer.cs</Link>
45+
</Compile>
46+
<Compile Include="..\OptimizelySDK\Bucketing\Decision.cs">
47+
<Link>Bucketing\Decision.cs</Link>
48+
</Compile>
49+
<Compile Include="..\OptimizelySDK\Bucketing\DecisionService.cs">
50+
<Link>Bucketing\DecisionService.cs</Link>
51+
</Compile>
52+
<Compile Include="..\OptimizelySDK\Bucketing\UserProfile.cs">
53+
<Link>Bucketing\UserProfile.cs</Link>
54+
</Compile>
55+
<Compile Include="..\OptimizelySDK\Bucketing\UserProfileService.cs">
56+
<Link>Bucketing\UserProfileService.cs</Link>
57+
</Compile>
58+
<Compile Include="..\OptimizelySDK\Bucketing\UserProfileUtil.cs">
59+
<Link>Bucketing\UserProfileUtil.cs</Link>
60+
</Compile>
61+
<Compile Include="..\OptimizelySDK\Config\DatafileProjectConfig.cs">
62+
<Link>Config\DatafileProjectConfig.cs</Link>
63+
</Compile>
64+
<Compile Include="..\OptimizelySDK\Config\FallbackProjectConfigManager.cs">
65+
<Link>Config\FallbackProjectConfigManager.cs</Link>
66+
</Compile>
67+
<Compile Include="..\OptimizelySDK\Config\HttpProjectConfigManager.cs">
68+
<Link>Config\HttpProjectConfigManager.cs</Link>
69+
</Compile>
70+
<Compile Include="..\OptimizelySDK\Config\PollingProjectConfigManager.cs">
71+
<Link>Config\PollingProjectConfigManager.cs</Link>
72+
</Compile>
73+
<Compile Include="..\OptimizelySDK\Config\ProjectConfigManager.cs">
74+
<Link>Config\ProjectConfigManager.cs</Link>
75+
</Compile>
76+
<Compile Include="..\OptimizelySDK\Entity\Attribute.cs">
77+
<Link>Entity\Attribute.cs</Link>
78+
</Compile>
79+
<Compile Include="..\OptimizelySDK\Entity\Audience.cs">
80+
<Link>Entity\Audience.cs</Link>
81+
</Compile>
82+
<Compile Include="..\OptimizelySDK\Entity\Entity.cs">
83+
<Link>Entity\Entity.cs</Link>
84+
</Compile>
85+
<Compile Include="..\OptimizelySDK\Entity\Event.cs">
86+
<Link>Entity\Event.cs</Link>
87+
</Compile>
88+
<Compile Include="..\OptimizelySDK\Entity\EventAttributes.cs">
89+
<Link>Entity\EventAttributes.cs</Link>
90+
</Compile>
91+
<Compile Include="..\OptimizelySDK\Entity\Experiment.cs">
92+
<Link>Entity\Experiment.cs</Link>
93+
</Compile>
94+
<Compile Include="..\OptimizelySDK\Entity\FeatureDecision.cs">
95+
<Link>Entity\FeatureDecision.cs</Link>
96+
</Compile>
97+
<Compile Include="..\OptimizelySDK\Entity\FeatureFlag.cs">
98+
<Link>Entity\FeatureFlag.cs</Link>
99+
</Compile>
100+
<Compile Include="..\OptimizelySDK\Entity\FeatureVariable.cs">
101+
<Link>Entity\FeatureVariable.cs</Link>
102+
</Compile>
103+
<Compile Include="..\OptimizelySDK\Entity\FeatureVariableUsage.cs">
104+
<Link>Entity\FeatureVariableUsage.cs</Link>
105+
</Compile>
106+
<Compile Include="..\OptimizelySDK\Entity\ForcedVariation.cs">
107+
<Link>Entity\ForcedVariation.cs</Link>
108+
</Compile>
109+
<Compile Include="..\OptimizelySDK\Entity\Group.cs">
110+
<Link>Entity\Group.cs</Link>
111+
</Compile>
112+
<Compile Include="..\OptimizelySDK\Entity\IdKeyEntity.cs">
113+
<Link>Entity\IdKeyEntity.cs</Link>
114+
</Compile>
115+
<Compile Include="..\OptimizelySDK\Entity\Rollout.cs">
116+
<Link>Entity\Rollout.cs</Link>
117+
</Compile>
118+
<Compile Include="..\OptimizelySDK\Entity\TrafficAllocation.cs">
119+
<Link>Entity\TrafficAllocation.cs</Link>
120+
</Compile>
121+
<Compile Include="..\OptimizelySDK\Entity\UserAttributes.cs">
122+
<Link>Entity\UserAttributes.cs</Link>
123+
</Compile>
124+
<Compile Include="..\OptimizelySDK\Entity\Variation.cs">
125+
<Link>Entity\Variation.cs</Link>
126+
</Compile>
127+
<Compile Include="..\OptimizelySDK\ErrorHandler\DefaultErrorHandler.cs">
128+
<Link>ErrorHandler\DefaultErrorHandler.cs</Link>
129+
</Compile>
130+
<Compile Include="..\OptimizelySDK\ErrorHandler\IErrorHandler.cs">
131+
<Link>ErrorHandler\IErrorHandler.cs</Link>
132+
</Compile>
133+
<Compile Include="..\OptimizelySDK\ErrorHandler\NoOpErrorHandler.cs">
134+
<Link>ErrorHandler\NoOpErrorHandler.cs</Link>
135+
</Compile>
136+
<Compile Include="..\OptimizelySDK\Event\EventFactory.cs">
137+
<Link>Event\EventFactory.cs</Link>
138+
</Compile>
139+
<Compile Include="..\OptimizelySDK\Event\LogEvent.cs">
140+
<Link>Event\LogEvent.cs</Link>
141+
</Compile>
142+
<Compile Include="..\OptimizelySDK\Event\UserEventFactory.cs">
143+
<Link>Event\UserEventFactory.cs</Link>
144+
</Compile>
145+
<Compile Include="..\OptimizelySDK\Event\Builder\EventBuilder.cs">
146+
<Link>Event\Builder\EventBuilder.cs</Link>
147+
</Compile>
148+
<Compile Include="..\OptimizelySDK\Event\Builder\Params.cs">
149+
<Link>Event\Builder\Params.cs</Link>
150+
</Compile>
151+
<Compile Include="..\OptimizelySDK\Event\Dispatcher\DefaultEventDispatcher.cs">
152+
<Link>Event\Dispatcher\DefaultEventDispatcher.cs</Link>
153+
</Compile>
154+
<Compile Include="..\OptimizelySDK\Event\Dispatcher\HttpClientEventDispatcher45.cs">
155+
<Link>Event\Dispatcher\HttpClientEventDispatcher45.cs</Link>
156+
</Compile>
157+
<Compile Include="..\OptimizelySDK\Event\Dispatcher\IEventDispatcher.cs">
158+
<Link>Event\Dispatcher\IEventDispatcher.cs</Link>
159+
</Compile>
160+
<Compile Include="..\OptimizelySDK\Event\Dispatcher\WebRequestEventDispatcher35.cs">
161+
<Link>Event\Dispatcher\WebRequestEventDispatcher35.cs</Link>
162+
</Compile>
163+
<Compile Include="..\OptimizelySDK\Event\Entity\ConversionEvent.cs">
164+
<Link>Event\Entity\ConversionEvent.cs</Link>
165+
</Compile>
166+
<Compile Include="..\OptimizelySDK\Event\Entity\Decision.cs">
167+
<Link>Event\Entity\Decision.cs</Link>
168+
</Compile>
169+
<Compile Include="..\OptimizelySDK\Event\Entity\EventBatch.cs">
170+
<Link>Event\Entity\EventBatch.cs</Link>
171+
</Compile>
172+
<Compile Include="..\OptimizelySDK\Event\Entity\EventContext.cs">
173+
<Link>Event\Entity\EventContext.cs</Link>
174+
</Compile>
175+
<Compile Include="..\OptimizelySDK\Event\Entity\ImpressionEvent.cs">
176+
<Link>Event\Entity\ImpressionEvent.cs</Link>
177+
</Compile>
178+
<Compile Include="..\OptimizelySDK\Event\Entity\Snapshot.cs">
179+
<Link>Event\Entity\Snapshot.cs</Link>
180+
</Compile>
181+
<Compile Include="..\OptimizelySDK\Event\Entity\SnapshotEvent.cs">
182+
<Link>Event\Entity\SnapshotEvent.cs</Link>
183+
</Compile>
184+
<Compile Include="..\OptimizelySDK\Event\Entity\UserEvent.cs">
185+
<Link>Event\Entity\UserEvent.cs</Link>
186+
</Compile>
187+
<Compile Include="..\OptimizelySDK\Event\Entity\Visitor.cs">
188+
<Link>Event\Entity\Visitor.cs</Link>
189+
</Compile>
190+
<Compile Include="..\OptimizelySDK\Event\Entity\VisitorAttribute.cs">
191+
<Link>Event\Entity\VisitorAttribute.cs</Link>
192+
</Compile>
193+
<Compile Include="..\OptimizelySDK\Exceptions\OptimizelyException.cs">
194+
<Link>Exceptions\OptimizelyException.cs</Link>
195+
</Compile>
196+
<Compile Include="..\OptimizelySDK\Logger\DefaultLogger.cs">
197+
<Link>Logger\DefaultLogger.cs</Link>
198+
</Compile>
199+
<Compile Include="..\OptimizelySDK\Logger\ILogger.cs">
200+
<Link>Logger\ILogger.cs</Link>
201+
</Compile>
202+
<Compile Include="..\OptimizelySDK\Logger\NoOpLogger.cs">
203+
<Link>Logger\NoOpLogger.cs</Link>
204+
</Compile>
205+
<Compile Include="..\OptimizelySDK\Notifications\NotificationCenter.cs">
206+
<Link>Notifications\NotificationCenter.cs</Link>
207+
</Compile>
208+
<Compile Include="..\OptimizelySDK\Utils\AttributeMatchTypes.cs">
209+
<Link>Utils\AttributeMatchTypes.cs</Link>
210+
</Compile>
211+
<Compile Include="..\OptimizelySDK\Utils\ConditionParser.cs">
212+
<Link>Utils\ConditionParser.cs</Link>
213+
</Compile>
214+
<Compile Include="..\OptimizelySDK\Utils\ConfigParser.cs">
215+
<Link>Utils\ConfigParser.cs</Link>
216+
</Compile>
217+
<Compile Include="..\OptimizelySDK\Utils\ControlAttributes.cs">
218+
<Link>Utils\ControlAttributes.cs</Link>
219+
</Compile>
220+
<Compile Include="..\OptimizelySDK\Utils\DateTimeUtils.cs">
221+
<Link>Utils\DateTimeUtils.cs</Link>
222+
</Compile>
223+
<Compile Include="..\OptimizelySDK\Utils\DecisionInfoTypes.cs">
224+
<Link>Utils\DecisionInfoTypes.cs</Link>
225+
</Compile>
226+
<Compile Include="..\OptimizelySDK\Utils\EventTagUtils.cs">
227+
<Link>Utils\EventTagUtils.cs</Link>
228+
</Compile>
229+
<Compile Include="..\OptimizelySDK\Utils\ExceptionExtensions.cs">
230+
<Link>Utils\ExceptionExtensions.cs</Link>
231+
</Compile>
232+
<Compile Include="..\OptimizelySDK\Utils\ExperimentUtils.cs">
233+
<Link>Utils\ExperimentUtils.cs</Link>
234+
</Compile>
235+
<Compile Include="..\OptimizelySDK\Utils\Schema.cs">
236+
<Link>Utils\Schema.cs</Link>
237+
</Compile>
238+
<Compile Include="..\OptimizelySDK\Utils\Validator.cs">
239+
<Link>Utils\Validator.cs</Link>
240+
</Compile>
241+
</ItemGroup>
242+
<ItemGroup>
243+
<None Include="..\OptimizelySDK\Event\.DS_Store">
244+
<Link>Event\.DS_Store</Link>
245+
</None>
246+
</ItemGroup>
247+
<ItemGroup>
248+
<PackageReference Include="murmurhash-signed" Version="1.0.2" />
249+
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
250+
<PackageReference Include="NJsonSchema" Version="8.30.6304.31883" />
251+
</ItemGroup>
252+
<ItemGroup>
253+
<EmbeddedResource Include="..\OptimizelySDK\Utils\schema.json">
254+
<Link>Utils\schema.json</Link>
255+
<LogicalName>OptimizelySDK.Utils.schema.json</LogicalName>
256+
</EmbeddedResource>
257+
</ItemGroup>
258+
</Project>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// General Information about an assembly is controlled through the following
6+
// set of attributes. Change these attribute values to modify the information
7+
// associated with an assembly.
8+
[assembly: AssemblyTitle("OptimizelySDK.NetStandard20")]
9+
[assembly: AssemblyDescription("")]
10+
[assembly: AssemblyConfiguration("")]
11+
[assembly: AssemblyCompany("")]
12+
[assembly: AssemblyProduct("OptimizelySDK.NetStandard20")]
13+
[assembly: AssemblyCopyright("Copyright © 2019")]
14+
[assembly: AssemblyTrademark("")]
15+
[assembly: AssemblyCulture("")]
16+
17+
// Setting ComVisible to false makes the types in this assembly not visible
18+
// to COM components. If you need to access a type in this assembly from
19+
// COM, set the ComVisible attribute to true on that type.
20+
[assembly: ComVisible(false)]
21+
22+
// Make types and members with internal scope visible to friend
23+
// OptimizelySDK.Tests unit tests.
24+
#pragma warning disable 1700
25+
[assembly: InternalsVisibleTo("OptimizelySDK.Tests, PublicKey=ThePublicKey")]
26+
#pragma warning restore 1700
27+
28+
// The following GUID is for the ID of the typelib if this project is exposed to COM
29+
[assembly: Guid("40906323-a8be-4a71-8e42-9646b23d56cf")]
30+
31+
// Version information for an assembly consists of the following four values:
32+
//
33+
// Major Version
34+
// Minor Version
35+
// Build Number
36+
// Revision
37+
//
38+
// You can specify all the values or you can default the Build and Revision Numbers
39+
// by using the '*' as shown below:
40+
// [assembly: AssemblyVersion("1.0.*")]
41+
[assembly: AssemblyVersion("3.2.0.0")]
42+
[assembly: AssemblyFileVersion("3.2.0.0")]
43+
[assembly: AssemblyInformationalVersion("3.2.0")] // Used by Nuget.

OptimizelySDK.Package/OptimizelySDK.nuspec

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@
3434
<dependency id="Newtonsoft.Json" version="9.0.1" />
3535
<dependency id="NJsonSchema" version="8.33.6323.36213" />
3636
</group>
37+
<group targetFramework="netstandard2.0">
38+
<dependency id="NETStandard.Library" version="2.0.3" />
39+
<dependency id="murmurhash-signed" version="1.0.2" />
40+
<dependency id="Newtonsoft.Json" version="9.0.1" />
41+
<dependency id="NJsonSchema" version="8.33.6323.36213" />
42+
</group>
3743
</dependencies>
3844
</metadata>
3945
<files>

OptimizelySDK.Package/pack.ps1

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ Copy-Item -Path "..\OptimizelySDK.NetStandard16\bin\Release\netstandard1.6\Optim
2626
Copy-Item -Path "..\OptimizelySDK.NetStandard16\bin\Release\netstandard1.6\Optimizely*.pdb" -Destination ".\lib\netstandard1.6" -Recurse -force
2727
Copy-Item -Path "..\OptimizelySDK.NetStandard16\bin\Release\netstandard1.6\Optimizely*.xml" -Destination ".\lib\netstandard1.6" -Recurse -force
2828

29+
New-Item -Path ".\lib\netstandard2.0" -ItemType "directory" -force
30+
Copy-Item -Path "..\OptimizelySDK.NetStandard20\bin\Release\netstandard2.0\Optimizely*.dll" -Destination ".\lib\netstandard2.0" -Recurse -force
31+
Copy-Item -Path "..\OptimizelySDK.NetStandard20\bin\Release\netstandard2.0\Optimizely*.pdb" -Destination ".\lib\netstandard2.0" -Recurse -force
32+
Copy-Item -Path "..\OptimizelySDK.NetStandard20\bin\Release\netstandard2.0\Optimizely*.xml" -Destination ".\lib\netstandard2.0" -Recurse -force
33+
2934
################################################################
3035
# Creating NuGet package
3136
################################################################

OptimizelySDK.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptimizelySDK.Net35", "Opti
2929
EndProject
3030
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptimizelySDK.Net40", "OptimizelySDK.Net40\OptimizelySDK.Net40.csproj", "{41AFD990-BC81-49E3-BD85-40972BB2C262}"
3131
EndProject
32+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptimizelySDK.NetStandard20", "OptimizelySDK.NetStandard20\OptimizelySDK.NetStandard20.csproj", "{533C84F6-1167-4E21-B181-BD005BC5D027}"
33+
EndProject
3234
Global
3335
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3436
Debug|Any CPU = Debug|Any CPU
@@ -59,6 +61,10 @@ Global
5961
{41AFD990-BC81-49E3-BD85-40972BB2C262}.Debug|Any CPU.Build.0 = Debug|Any CPU
6062
{41AFD990-BC81-49E3-BD85-40972BB2C262}.Release|Any CPU.ActiveCfg = Release|Any CPU
6163
{41AFD990-BC81-49E3-BD85-40972BB2C262}.Release|Any CPU.Build.0 = Release|Any CPU
64+
{533C84F6-1167-4E21-B181-BD005BC5D027}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
65+
{533C84F6-1167-4E21-B181-BD005BC5D027}.Debug|Any CPU.Build.0 = Debug|Any CPU
66+
{533C84F6-1167-4E21-B181-BD005BC5D027}.Release|Any CPU.ActiveCfg = Release|Any CPU
67+
{533C84F6-1167-4E21-B181-BD005BC5D027}.Release|Any CPU.Build.0 = Release|Any CPU
6268
EndGlobalSection
6369
GlobalSection(SolutionProperties) = preSolution
6470
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)