diff options
-rw-r--r-- | src/DotNetOpenAuth/Messaging/MessagingUtilities.cs | 20 | ||||
-rw-r--r-- | tools/DotNetOpenAuth.targets | 7 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth/Messaging/MessagingUtilities.cs b/src/DotNetOpenAuth/Messaging/MessagingUtilities.cs index 3764c2f..be5927f 100644 --- a/src/DotNetOpenAuth/Messaging/MessagingUtilities.cs +++ b/src/DotNetOpenAuth/Messaging/MessagingUtilities.cs @@ -316,6 +316,26 @@ namespace DotNetOpenAuth.Messaging { } } +#if !CLR4 + /// <summary> + /// Copies the contents of one stream to another. + /// </summary> + /// <param name="copyFrom">The stream to copy from, at the position where copying should begin.</param> + /// <param name="copyTo">The stream to copy to, at the position where bytes should be written.</param> + /// <returns>The total number of bytes copied.</returns> + /// <remarks> + /// Copying begins at the streams' current positions. + /// The positions are NOT reset after copying is complete. + /// </remarks> + internal static int CopyTo(this Stream copyFrom, Stream copyTo) { + Contract.Requires<ArgumentNullException>(copyFrom != null); + Contract.Requires<ArgumentNullException>(copyTo != null); + Contract.Requires<ArgumentException>(copyFrom.CanRead, MessagingStrings.StreamUnreadable); + Contract.Requires<ArgumentException>(copyTo.CanWrite, MessagingStrings.StreamUnwritable); + return CopyUpTo(copyFrom, copyTo, int.MaxValue); + } +#endif + /// <summary> /// Copies the contents of one stream to another. /// </summary> diff --git a/tools/DotNetOpenAuth.targets b/tools/DotNetOpenAuth.targets index 8d0167f..9a2c6f9 100644 --- a/tools/DotNetOpenAuth.targets +++ b/tools/DotNetOpenAuth.targets @@ -8,6 +8,13 @@ <DefineConstants Condition=" '$(ClrVersion)' == '4' ">$(DefineConstants);CLR4</DefineConstants> </PropertyGroup> + <ItemGroup Condition=" '$(ClrVersion)' != '4' "> + <Reference Include="Microsoft.Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=736440c9b414ea16, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\lib\Microsoft.Contracts.dll</HintPath> + </Reference> + </ItemGroup> + <!-- This forces a build break when Code Contracts are not installed. --> <PropertyGroup> <CompileDependsOn>$(CompileDependsOn);CheckForCodeContracts</CompileDependsOn> |