Skip to content

Commit 1d2216a

Browse files
committed
Initial clone from latest CodePlex repo + some cleanup.
1 parent dc45875 commit 1d2216a

File tree

589 files changed

+93620
-1
lines changed

Some content is hidden

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

589 files changed

+93620
-1
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
[Rr]eleases/
1818
x64/
1919
x86/
20-
build/
2120
bld/
2221
[Bb]in/
2322
[Oo]bj/
@@ -194,3 +193,4 @@ FakesAssemblies/
194193

195194
# Visual Studio 6 workspace options file
196195
*.opt
196+
/Main/Build/Properties/Rxx2.snk

Main/.nuget/NuGet.Config

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<solution>
4+
<add key="disableSourceControlIntegration" value="true" />
5+
</solution>
6+
</configuration>

Main/.nuget/NuGet.exe

1.59 MB
Binary file not shown.

Main/.nuget/NuGet.targets

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
5+
6+
<!-- Enable the restore command to run before builds -->
7+
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
8+
9+
<!-- Property that enables building a package from a project -->
10+
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
11+
12+
<!-- Determines if package restore consent is required to restore packages -->
13+
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
14+
15+
<!-- Download NuGet.exe if it does not already exist -->
16+
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
17+
</PropertyGroup>
18+
19+
<ItemGroup Condition=" '$(PackageSources)' == '' ">
20+
<!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
21+
<!--
22+
<PackageSource Include="https://nuget.org/api/v2/" />
23+
<PackageSource Include="https://my-nuget-source/nuget/" />
24+
-->
25+
</ItemGroup>
26+
27+
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
28+
<!-- Windows specific commands -->
29+
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
30+
<PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
31+
</PropertyGroup>
32+
33+
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
34+
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
35+
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
36+
<PackagesConfig>packages.config</PackagesConfig>
37+
</PropertyGroup>
38+
39+
<PropertyGroup>
40+
<!-- NuGet command -->
41+
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
42+
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
43+
44+
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
45+
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
46+
47+
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
48+
49+
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
50+
<!-- Commands -->
51+
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreCommand>
52+
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
53+
54+
<!-- We need to ensure packages are restored prior to assembly resolve -->
55+
<ResolveReferencesDependsOn Condition="$(RestorePackages) == 'true'">
56+
RestorePackages;
57+
$(ResolveReferencesDependsOn);
58+
</ResolveReferencesDependsOn>
59+
60+
<!-- Make the build depend on restore packages -->
61+
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
62+
$(BuildDependsOn);
63+
BuildPackage;
64+
</BuildDependsOn>
65+
</PropertyGroup>
66+
67+
<Target Name="CheckPrerequisites">
68+
<!-- Raise an error if we're unable to locate nuget.exe -->
69+
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
70+
<SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
71+
<!--
72+
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
73+
This effectively acts as a lock that makes sure that the download operation will only happen once and all
74+
parallel builds will have to wait for it to complete.
75+
-->
76+
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT" />
77+
</Target>
78+
79+
<Target Name="_DownloadNuGet">
80+
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
81+
</Target>
82+
83+
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
84+
<Exec Command="$(RestoreCommand)"
85+
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
86+
87+
<Exec Command="$(RestoreCommand)"
88+
LogStandardErrorAsError="true"
89+
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
90+
</Target>
91+
92+
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
93+
<Exec Command="$(BuildCommand)"
94+
Condition=" '$(OS)' != 'Windows_NT' " />
95+
96+
<Exec Command="$(BuildCommand)"
97+
LogStandardErrorAsError="true"
98+
Condition=" '$(OS)' == 'Windows_NT' " />
99+
</Target>
100+
101+
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
102+
<ParameterGroup>
103+
<OutputFilename ParameterType="System.String" Required="true" />
104+
</ParameterGroup>
105+
<Task>
106+
<Reference Include="System.Core" />
107+
<Using Namespace="System" />
108+
<Using Namespace="System.IO" />
109+
<Using Namespace="System.Net" />
110+
<Using Namespace="Microsoft.Build.Framework" />
111+
<Using Namespace="Microsoft.Build.Utilities" />
112+
<Code Type="Fragment" Language="cs">
113+
<![CDATA[
114+
try {
115+
OutputFilename = Path.GetFullPath(OutputFilename);
116+
117+
Log.LogMessage("Downloading latest version of NuGet.exe...");
118+
WebClient webClient = new WebClient();
119+
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
120+
121+
return true;
122+
}
123+
catch (Exception ex) {
124+
Log.LogErrorFromException(ex);
125+
return false;
126+
}
127+
]]>
128+
</Code>
129+
</Task>
130+
</UsingTask>
131+
132+
<UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
133+
<ParameterGroup>
134+
<EnvKey ParameterType="System.String" Required="true" />
135+
<EnvValue ParameterType="System.String" Required="true" />
136+
</ParameterGroup>
137+
<Task>
138+
<Using Namespace="System" />
139+
<Code Type="Fragment" Language="cs">
140+
<![CDATA[
141+
try {
142+
Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
143+
}
144+
catch {
145+
}
146+
]]>
147+
</Code>
148+
</Task>
149+
</UsingTask>
150+
</Project>
+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
Goals and Guidelines for Rxx
2+
http://rxx.codeplex.com/
3+
4+
Date Author Changes
5+
4/2/2011 Dave S. First draft
6+
6/23/2011 Dave S. Updated for Rxx 1.1.
7+
8+
9+
Mission Statement:
10+
11+
Rxx provides LINQ extensions that are supplementary to Microsoft's Reactive Extensions for .NET (Rx).
12+
13+
14+
Project Management and Design Goals:
15+
16+
1. Use CodePlex for coordination, issue tracking, discussions, development, TFS source control, documentation and delivery.
17+
a. Also use NuGet as another delivery channel.
18+
2. All content licensed under the Microsoft Public License (Ms-PL).
19+
3. Produce a solid, simple and single deliverable class library for download.
20+
21+
Simple and single deliverable class library =
22+
23+
a. A wide variety of APIs and extensions that solve specific, real-world problems using LINQ.
24+
I. Target the latest official RTM of the .NET Framework, Silverlight and Windows Phone; currently, .NET 4.0, SL4 and WP7, respectively.
25+
II. All code will be written in C# using Visual Studio 2010.
26+
b. Focus on the Rx and Ix spaces only, with Rx as the priority.
27+
c. Do not include any one-offs, out-of-band or targeted APIs; e.g., a reactive service wrapper for the Twitter streaming API does not
28+
belong in this project.
29+
d. Do not include any tools, installers, executables, build scripts, Visual Studio extensions, T4 templates, etc.
30+
e. Additional projects for unit tests and/or hands-on labs are acceptable as long as they are focused on the APIs being delivered.
31+
32+
Solid =
33+
34+
f. Deliver completed APIs only (binary download).
35+
I. Incomplete source code check-ins are acceptable if clearly commented as being incomplete/untested and indicating what�s missing.
36+
g. Deliver tested APIs only (binary download).
37+
I. Test by writing specialized labs, keeping end-users in mind. Labs should illustrate real-world usage while exercising the API.
38+
II. Unit test when necessary based on the volatility or complexity of the API under development. (Developer�s discretion.)
39+
h. Standardized:
40+
I. Follow the Rx Design Guidelines.
41+
http://go.microsoft.com/fwlink/?LinkID=205219
42+
II. Follow the Microsoft Design Guidelines for Developing Class Libraries.
43+
http://msdn.microsoft.com/en-us/library/ms229042.aspx
44+
i. Write reference documentation � Complete XML comments for IntelliSense.
45+
j. Write conceptual documentation � CodePlex Documentation tab. At least include a general API taxonomy with a summary for each logical API.
46+
I. As time permits: Detail each API�s design goals and common usage scenarios. Include code examples.
47+
4. Perform unconditional source code check-ins on a need-by-need basis.
48+
a. Code review is recommended, but optional.
49+
5. Democratically agree upon deliverable content and dates.
50+
6. Democratically consider additional coordinators and contributors on a per-request basis.
51+
52+
53+
Design Guidelines:
54+
55+
1. Rx Design Guidelines
56+
http://go.microsoft.com/fwlink/?LinkID=205219
57+
2. Microsoft Design Guidelines for Developing Class Libraries
58+
http://msdn.microsoft.com/en-us/library/ms229042.aspx
59+
60+
61+
Coding Styles and Tools:
62+
63+
1. Use Code Contracts instead of the classic if-then-throw style parameter validation.
64+
http://msdn.microsoft.com/en-us/devlabs/dd491992
65+
2. Use Code Analysis in Visual Studio (or FxCop) and tweak the rule-set for use with Code Contracts.
66+
http://msdn.microsoft.com/en-us/library/3z0aeatx.aspx
67+
3. Use StyleCop and tweak the rule-set for use with Code Contracts and Rxx team preferences.
68+
http://stylecop.codeplex.com/
69+
4. Use IntelliSense Code Snippets to organize code files and to quickly author common code blocks.
70+
See the Build\Snippets\_Read Me.txt file in this solution for more information.
71+
72+
** Fix or suppress all warnings before distributing new versions of Rxx for public consumption.
73+
74+
75+
Multi-targeting:
76+
77+
Rxx targets the .NET Framework 4.5, Silverlight 5 and WP7.1 as three different Rxx.dll files built by separate, aptly-named class library projects.
78+
79+
It is each developer's responsibility to maintain parity between the libraries whenever possible by adding links to source code files from the
80+
main Rxx project that targets .NET 4.5 to the other projects that target Silverlight and Windows Phone.
81+
82+
To add new source code files to Rxx:
83+
84+
1. Add a new source code file as normal to the main Rxx project that targets the .NET Framework 4.5.
85+
2. Recreate the identical folder structure in the Rxx-Silverlight 5 and Rxx-Phone 7.1 projects.
86+
3. Add a link to the source code file from the main Rxx project to the Rxx-Silverlight and Rxx-Phone projects.
87+
a. How to: Add Existing Items to a Project, Adding an Existing Item as a Link
88+
http://msdn.microsoft.com/en-us/library/9f4t9t92(v=VS.100).aspx
89+
4. Build the solution normally.
90+
5. Fix any warnings and errors in the Rxx-Silverlight and Rxx-Phone projects.
91+
a. In some cases the BCL for Silverlight or Phone simply does not support the APIs that your new source code file requires. In these cases
92+
you can simply delete the file link from the target projects to exclude this functionality from the Silverlight or Phone builds.
93+
b. Alternatively, for source code files that contain some linkable code or features that require only slight modifications to work for any
94+
or some of the targets, you can add conditional compilation to the source code file. Use the SILVERLIGHT and/or WINDOWS_PHONE symbols to
95+
filter specific code that should not appear in either the main project or the linked projects. Note that the Windows Phone project
96+
defines both symbols, the Silverlight project only defines the SILVERLIGHT symbol and the full .NET Framework project defines neither.
97+
98+
** Make sure that you track which code has and has not been linked by adding notes to this file:
99+
100+
Deployment\Features.txt
101+
102+
103+
Documentation (.chm):
104+
105+
1. Sandcastle Installer
106+
http://shfb.codeplex.com/
107+
108+
Note: White Tie is used to automate building documentation via SHFB.
109+
110+
111+
Testing Procedures:
112+
113+
1. Use the DaveSexton.Labs infrastructure project to create new hands-on labs and test APIs as they are being developed.
114+
2. Write Unit Tests when appropriate.
115+
http://msdn.microsoft.com/en-us/library/dd264975.aspx

0 commit comments

Comments
 (0)