<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>bcl Wiki Rss Feed</title><link>http://bcl.codeplex.com/wikipage</link><description>bcl Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>https://bcl.codeplex.com/wikipage?version=17</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Project Description&lt;/h2&gt;The Base Class Libraries site hosts samples, previews, and prototypes from the BCL team.&lt;br /&gt;This is a site for the BCL Team to get features to customers to try out without requiring a Beta or CTP of the .NET Framework.  Our goal is to put generally useful functionality here, and to get feedback on it and have the chance to iterate on the design.  Having a feature here does &lt;b&gt;not&lt;/b&gt; mean that it will eventually end up in the BCL.  Some items are samples that build on top of existing classes, and some features might be ones we were considering for the .NET Framework but decide not to include for one reason or another.&lt;br /&gt;&lt;br /&gt;We&amp;#39;d love to get your feedback in the form of comments, bug reports, and feature requests, but please note that we cannot take code submissions.  We plan to release updates with new features and updates to existing features on a quarterly basis, but we&amp;#39;re just getting started with this and may adjust down the line depending on how things go.&lt;br /&gt;&lt;br /&gt;And just to avoid confusion, you will &lt;b&gt;not&lt;/b&gt; find the source code for the whole BCL on this CodePlex site.  This site is for things we&amp;#39;re thinking about for the future, not our existing classes.&lt;br /&gt;
&lt;h2&gt;Feature Descriptions&lt;/h2&gt;Below are descriptions of features currently in this project.  You can find more details about each in the &lt;a href="https://bcl.codeplex.com/documentation?referringTitle=Home"&gt;Documentation&lt;/a&gt; section of this project.&lt;br /&gt;
&lt;h3&gt;&lt;a href="https://bcl.codeplex.com/wikipage?title=BigRational&amp;referringTitle=Home"&gt;BigRational&lt;/a&gt;&lt;/h3&gt;
BigRational builds on the &lt;a href="http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(VS.100).aspx"&gt;BigInteger&lt;/a&gt; introduced in .NET Framework 4 to create an arbitrary-precision rational number class.&lt;br /&gt;
&lt;h3&gt;&lt;a href="https://bcl.codeplex.com/wikipage?title=Long%20Path&amp;referringTitle=Home"&gt;Long Path&lt;/a&gt;&lt;/h3&gt;This library provides functionality to make it easier to work with paths that are longer than the current 259 character limit.&lt;br /&gt;
&lt;h3&gt;&lt;a href="https://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;referringTitle=Home"&gt;PerfMonitor&lt;/a&gt;&lt;/h3&gt;PerfMonitor is a command-line tool for profiling the system using Event Tracing for Windows (ETW).  PerfMonitor is built on top of the &lt;a href="https://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=Home"&gt;TraceEvent&lt;/a&gt; library.&lt;br /&gt;
&lt;h3&gt;&lt;a href="https://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=Home"&gt;TraceEvent&lt;/a&gt;&lt;/h3&gt;An library that greatly simplifies reading Event Tracing for Windows (ETW) events.&lt;br /&gt;
&lt;h2&gt;Related Sites&lt;/h2&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa569603.aspx"&gt;BCL Page on MSDN&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://blogs.msdn.com/bclteam/"&gt;BCL Team Blog&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://blogs.msdn.com/clrteam/"&gt;CLR Team Blog&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>terrajobst</author><pubDate>Tue, 16 Apr 2013 06:08:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130416060806A</guid></item><item><title>Updated Wiki: Home</title><link>http://bcl.codeplex.com/wikipage?version=16</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Project Description&lt;/h2&gt;The Base Class Libraries site hosts samples, previews, and prototypes from the BCL team.&lt;br /&gt;This is a site for the BCL Team to get features to customers to try out without requiring a Beta or CTP of the .NET Framework.  Our goal is to put generally useful functionality here, and to get feedback on it and have the chance to iterate on the design.  Having a feature here does &lt;b&gt;not&lt;/b&gt; mean that it will eventually end up in the BCL.  Some items are samples that build on top of existing classes, and some features might be ones we were considering for the .NET Framework but decide not to include for one reason or another.&lt;br /&gt;&lt;br /&gt;We&amp;#39;d love to get your feedback in the form of comments, bug reports, and feature requests, but please note that we cannot take code submissions.  We plan to release updates with new features and updates to existing features on a quarterly basis, but we&amp;#39;re just getting started with this and may adjust down the line depending on how things go.&lt;br /&gt;&lt;br /&gt;And just to avoid confusion, you will &lt;b&gt;not&lt;/b&gt; find the source code for the whole BCL on this CodePlex site.  This site is for things we&amp;#39;re thinking about for the future, not our existing classes.&lt;br /&gt;
&lt;h2&gt;Feature Descriptions&lt;/h2&gt;Below are descriptions of features currently in this project.  You can find more details about each in the &lt;a href="http://bcl.codeplex.com/documentation?referringTitle=Home"&gt;Documentation&lt;/a&gt; section of this project.&lt;br /&gt;
&lt;h3&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=BigRational&amp;referringTitle=Home"&gt;BigRational&lt;/a&gt;&lt;/h3&gt;
BigRational builds on the &lt;a href="http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(VS.100).aspx"&gt;BigInteger&lt;/a&gt; introduced in .NET Framework 4 to create an arbitrary-precision rational number class.&lt;br /&gt;
&lt;h3&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=Long%20Path&amp;referringTitle=Home"&gt;Long Path&lt;/a&gt;&lt;/h3&gt;This library provides functionality to make it easier to work with paths that are longer than the current 259 character limit.&lt;br /&gt;
&lt;h3&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;referringTitle=Home"&gt;PerfMonitor&lt;/a&gt;&lt;/h3&gt;PerfMonitor is a command-line tool for profiling the system using Event Tracing for Windows (ETW).  PerfMonitor is built on top of the &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=Home"&gt;TraceEvent&lt;/a&gt; library.&lt;br /&gt;
&lt;h3&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=Home"&gt;TraceEvent&lt;/a&gt;&lt;/h3&gt;An library that greatly simplifies reading Event Tracing for Windows (ETW) events.&lt;br /&gt;
&lt;h2&gt;Related Sites&lt;/h2&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa569603.aspx"&gt;BCL Page on MSDN&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://blogs.msdn.com/bclteam/"&gt;BCL Team Blog&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;a href="http://blogs.msdn.com/clrteam/"&gt;CLR Team Blog&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>terrajobst</author><pubDate>Thu, 21 Mar 2013 18:36:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130321063655P</guid></item><item><title>Updated Wiki: PerfMonitor</title><link>http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;version=19</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;PerfMonitor&lt;/h2&gt;PerfMonitor PerfMonitor is a command-line tool for profiling the system using  &lt;a href="http://msdn.microsoft.com/en-us/library/bb968803(VS.85).aspx"&gt;Event Tracing for Windows&lt;/a&gt; (ETW) events.   ETW is the power behind the &lt;a href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Windows Performance Analyzer&lt;/a&gt; (also known as the XPerf Tool).    The Windows OS has events for just about anything that you could be interested in from a performance standpoint (CPU usage, Context switched Disk I/O DLL Loads, Blocking, all with stack traces).    In addition the .NET Runtime has events for garbage collection, Just In time Compilation, Assembly loading and more.     PerfMonitor is a gateway to all of this information.   &lt;br /&gt;&lt;br /&gt;While PerfMonitor is a useful tool, it was really designed more as sample code for the &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; library.  This library is the &amp;#39;heart&amp;#39; of PerfMonitor, and PerfMonitor is mostly a command line parser and XML printer layered on top of that.    Nevertheless PerfMonitor has powerful features.  It has  the abilty to turn on and off any ETW provider, and thus can act as a &amp;#39;light weight&amp;#39; controler even if you decide to use tools like XPERF to actually analyze the data.     PerfMonitor also has better CLR support than XPERF currently has.   PerfMonitor can decode the full managed and unmanaged stacks that ETW kernel events provide, as well as do CLR specific analysis (like GC pause time and JIT compilation statstics).&lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;analyze&amp;#39; command that is designed to be a &amp;#39;Quick Perf Health Check&amp;#39; for managed applications.   In one command you can run a program and get an anaysis of its CPU costs, as well as GC memory, and Just In Time compilation overhead.   &lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;monitor&amp;#39; command that is designed to make it easy to use the new System.Diagnositics.Eventing.EventSource class.   Running &amp;#39;PerfMonitor monitorPrint EXEFILE&amp;#39; will turn on the event sources present in EXEFILE, run the EXEFILE, and then print the resulting loggint messages.   &lt;br /&gt;&lt;br /&gt;Please see the &lt;a href="http://bcl.codeplex.com/wikipage?title=Perfmonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;Perfmonitor Guide&lt;/a&gt; some &amp;#39;quick starts&amp;#39; on what you can do with the tool, if you are interested follow the download link below.  &lt;br /&gt;&lt;br /&gt;Finally PerfMonitor was design to be &amp;#39;easy to deploy&amp;#39;.  It is just a single EXE, which can be fetched from the &lt;a href="http://bcl.codeplex.com/releases/view/99985"&gt;Download Page&lt;/a&gt;.   It is XCOPY deployable (just copy the EXE out of the ZIP file). and you are ready to run it.   Despite what the &amp;#39;System Requirements window says (which is the max for all code on this site)  PerfMonitor (and TraceEvent) only need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;amp;displaylang=en"&gt;V3.5 of the .NET Framework&lt;/a&gt; to be installed.   If you are running Windows Vista or above or have Windows Update running you should have this.  If PerfMonitor fails to load simply go to the link above and download it.   &lt;br /&gt;&lt;br /&gt;PerfMonitor does need at least windows VISTA.  It will not work on XP or win2K3.  &lt;br /&gt;
&lt;h3&gt;See Also &lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="http://bcl.codeplex.com/releases/view/99985"&gt;Download Page&lt;/a&gt; to download&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;PerfMonitor Guide&lt;/a&gt; for a quick look at what PerfMonitor can do before downloading.&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; and &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent%20Class%20Overview&amp;referringTitle=PerfMonitor"&gt;TraceEvent Class Overview&lt;/a&gt; which is the programatic interface that was used to implement PerfMonitor. &lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;a href="http://bcl.codeplex.com/Thread/List.aspx"&gt;Ask a question&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic"&gt;File a bug&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>VanceMorrison</author><pubDate>Mon, 07 Jan 2013 04:10:22 GMT</pubDate><guid isPermaLink="false">Updated Wiki: PerfMonitor 20130107041022A</guid></item><item><title>Updated Wiki: PerfMonitor</title><link>http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;version=18</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;PerfMonitor&lt;/h2&gt;PerfMonitor PerfMonitor is a command-line tool for profiling the system using  &lt;a href="http://msdn.microsoft.com/en-us/library/bb968803(VS.85).aspx"&gt;Event Tracing for Windows&lt;/a&gt; (ETW) events.   ETW is the power behind the &lt;a href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Windows Performance Analyzer&lt;/a&gt; (also known as the XPerf Tool).    The Windows OS has events for just about anything that you could be interested in from a performance standpoint (CPU usage, Context switched Disk I/O DLL Loads, Blocking, all with stack traces).    In addition the .NET Runtime has events for garbage collection, Just In time Compilation, Assembly loading and more.     PerfMonitor is a gateway to all of this information.   &lt;br /&gt;&lt;br /&gt;While PerfMonitor is a useful tool, it was really designed more as sample code for the &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; library.  This library is the &amp;#39;heart&amp;#39; of PerfMonitor, and PerfMonitor is mostly a command line parser and XML printer layered on top of that.    Nevertheless PerfMonitor has powerful features.  It has  the abilty to turn on and off any ETW provider, and thus can act as a &amp;#39;light weight&amp;#39; controler even if you decide to use tools like XPERF to actually analyze the data.     PerfMonitor also has better CLR support than XPERF currently has.   PerfMonitor can decode the full managed and unmanaged stacks that ETW kernel events provide, as well as do CLR specific analysis (like GC pause time and JIT compilation statstics).&lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;analyze&amp;#39; command that is designed to be a &amp;#39;Quick Perf Health Check&amp;#39; for managed applications.   In one command you can run a program and get an anaysis of its CPU costs, as well as GC memory, and Just In Time compilation overhead.   &lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;monitor&amp;#39; command that is designed to make it easy to use the new System.Diagnositics.Eventing.EventSource class.   Running &amp;#39;PerfMonitor monitorPrint EXEFILE&amp;#39; will turn on the event sources present in EXEFILE, run the EXEFILE, and then print the resulting loggint messages.   &lt;br /&gt;&lt;br /&gt;Please see the &lt;a href="http://bcl.codeplex.com/wikipage?title=Perfmonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;Perfmonitor Guide&lt;/a&gt; some &amp;#39;quick starts&amp;#39; on what you can do with the tool, if you are interested follow the download link below.  &lt;br /&gt;&lt;br /&gt;Finally PerfMonitor was design to be &amp;#39;easy to deploy&amp;#39;.  It is just a single EXE, which can be fetched from the &lt;a href="http://bcl.codeplex.com/releases/view/49601"&gt;Download Page&lt;/a&gt;.   It is XCOPY deployable (just copy the EXE out of the ZIP file). and you are ready to run it.   Despite what the &amp;#39;System Requirements window says (which is the max for all code on this site)  PerfMonitor (and TraceEvent) only need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;amp;displaylang=en"&gt;V3.5 of the .NET Framework&lt;/a&gt; to be installed.   If you are running Windows Vista or above or have Windows Update running you should have this.  If PerfMonitor fails to load simply go to the link above and download it.   &lt;br /&gt;&lt;br /&gt;PerfMonitor does need at least windows VISTA.  It will not work on XP or win2K3.  &lt;br /&gt;
&lt;h3&gt;See Also &lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="http://bcl.codeplex.com/releases/view/99985"&gt;Download Page&lt;/a&gt; to download&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;PerfMonitor Guide&lt;/a&gt; for a quick look at what PerfMonitor can do before downloading.&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; and &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent%20Class%20Overview&amp;referringTitle=PerfMonitor"&gt;TraceEvent Class Overview&lt;/a&gt; which is the programatic interface that was used to implement PerfMonitor. &lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;a href="http://bcl.codeplex.com/Thread/List.aspx"&gt;Ask a question&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic"&gt;File a bug&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>VanceMorrison</author><pubDate>Mon, 07 Jan 2013 04:08:29 GMT</pubDate><guid isPermaLink="false">Updated Wiki: PerfMonitor 20130107040829A</guid></item><item><title>Updated Wiki: TraceEvent</title><link>http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;version=18</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;TraceEvent&lt;/h2&gt;TraceEvent is an library that greatly simplifies reading &lt;a href="http://msdn.microsoft.com/en-us/library/bb968803(VS.85).aspx"&gt;Event Tracing for Windows&lt;/a&gt; (ETW) events.   ETW is the power behind the &lt;a href="http://msdn.microsoft.com/en-us/performance/default.aspx"&gt;Windows Performance Analyzer&lt;/a&gt; (also known as the XPerf Tool).    The Windows OS has events for just about anything that you could be interested in from a performance standpoint (CPU usage, Context switched Disk I/O DLL Loads, Blocking, all with stack traces).    In addition the .NET Runtime has events for garbage collection, Just In time Compilation, Assembly loading and more.    TraceEvent was built for people who understand the power of the data that XPERF lets you get at, but also needs the capability to programatically maniputate that data.    It is the foundation of truly powerful and flexible performance analysis on windows.     &lt;br /&gt;
&lt;h3&gt;Getting started&lt;/h3&gt;
First, see &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent%20Class%20Overview&amp;referringTitle=TraceEvent"&gt;TraceEvent Class Overview&lt;/a&gt; to see if the functionality this download provides piques your interest.   &lt;br /&gt;&lt;br /&gt;If it does, the best way to understand how TraceEvent can be used in &amp;#39;real life&amp;#39; scenarios is by exploring a sample.  That is exactly what &lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;referringTitle=TraceEvent"&gt;PerfMonitor&lt;/a&gt; is.   It is a simple console-based application that can collect ETW data as ETL files and display them in various ways as XML.    It is recommended that you simply download that application and learn see how it uses TraceEvent APIs to learn how to use it.   PerfMonitor includes the TraceEvent library as part of its download, so you get both a sample and the library in one download.    If you wish to just download TraceEvent without PerfMonitor you can do so by visiting the page.  &lt;br /&gt;
&lt;h3&gt;See Also&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent%20Class%20Overview&amp;referringTitle=TraceEvent"&gt;TraceEvent Class Overview&lt;/a&gt; for more information on the classes that this download provides.  &lt;/li&gt;
&lt;li&gt;&lt;a href="http://bcl.codeplex.com/releases/view/99984"&gt;Download&lt;/a&gt; for downloading either the source or the binary distribution of TraceEvent.dll&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;referringTitle=TraceEvent"&gt;PerfMonitor&lt;/a&gt; the simple command line ETW controller and printer based on TraceEvent. &lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://bcl.codeplex.com/Thread/List.aspx"&gt;Ask a question&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic"&gt;File a bug&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>VanceMorrison</author><pubDate>Mon, 07 Jan 2013 04:07:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: TraceEvent 20130107040708A</guid></item><item><title>New Comment on "Long Path Samples"</title><link>http://bcl.codeplex.com/wikipage?title=Long Path Samples&amp;ANCHOR#C22271</link><description>Both of these need a way to create one from a DirectoryInfo and FileInfo class.</description><author>TomGroszko</author><pubDate>Thu, 19 Jan 2012 23:50:32 GMT</pubDate><guid isPermaLink="false">New Comment on "Long Path Samples" 20120119115032P</guid></item><item><title>New Comment on "Long Path"</title><link>http://bcl.codeplex.com/wikipage?title=Long Path&amp;ANCHOR#C22103</link><description>Does the library has support to modify the permissions &amp;#40;setting&amp;#47;removing ACLs&amp;#41; on directories&amp;#47;files when the paths are longer.</description><author>chedebalakrishna</author><pubDate>Tue, 03 Jan 2012 23:38:05 GMT</pubDate><guid isPermaLink="false">New Comment on "Long Path" 20120103113805P</guid></item><item><title>New Comment on "Long Path"</title><link>http://bcl.codeplex.com/wikipage?title=Long Path&amp;ANCHOR#C21719</link><description>Thanks really Useful.&amp;#10;Needs support for UNC paths ie where longPathPrefix &amp;#61; &amp;#92;&amp;#92;&amp;#63;&amp;#92;UNC&amp;#92;</description><author>ExtinctPencil2</author><pubDate>Fri, 25 Nov 2011 12:45:18 GMT</pubDate><guid isPermaLink="false">New Comment on "Long Path" 20111125124518P</guid></item><item><title>New Comment on "TraceEvent Class Overview"</title><link>http://bcl.codeplex.com/wikipage?title=TraceEvent Class Overview&amp;ANCHOR#C19099</link><description>Will you be posting traceParserGen.exe any time&amp;#63; I have a bunch of custom events declared in a manifest and it would be nice to generate some skeleton code.&amp;#10;&amp;#10;Thanks&amp;#33;</description><author>szilvaa</author><pubDate>Wed, 30 Mar 2011 18:28:40 GMT</pubDate><guid isPermaLink="false">New Comment on "TraceEvent Class Overview" 20110330062840P</guid></item><item><title>Updated Wiki: PerfMonitor</title><link>http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;version=17</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;PerfMonitor&lt;/h2&gt;PerfMonitor PerfMonitor is a command-line tool for profiling the system using  &lt;a href="http://msdn.microsoft.com/en-us/library/bb968803(VS.85).aspx" class="externalLink"&gt;Event Tracing for Windows&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (ETW) events.   ETW is the power behind the &lt;a href="http://msdn.microsoft.com/en-us/performance/default.aspx" class="externalLink"&gt;Windows Performance Analyzer&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (also known as the XPerf Tool).    The Windows OS has events for just about anything that you could be interested in from a performance standpoint (CPU usage, Context switched Disk I/O DLL Loads, Blocking, all with stack traces).    In addition the .NET Runtime has events for garbage collection, Just In time Compilation, Assembly loading and more.     PerfMonitor is a gateway to all of this information.   &lt;br /&gt;&lt;br /&gt;While PerfMonitor is a useful tool, it was really designed more as sample code for the &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; library.  This library is the &amp;#39;heart&amp;#39; of PerfMonitor, and PerfMonitor is mostly a command line parser and XML printer layered on top of that.    Nevertheless PerfMonitor has powerful features.  It has  the abilty to turn on and off any ETW provider, and thus can act as a &amp;#39;light weight&amp;#39; controler even if you decide to use tools like XPERF to actually analyze the data.     PerfMonitor also has better CLR support than XPERF currently has.   PerfMonitor can decode the full managed and unmanaged stacks that ETW kernel events provide, as well as do CLR specific analysis (like GC pause time and JIT compilation statstics).&lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;analyze&amp;#39; command that is designed to be a &amp;#39;Quick Perf Health Check&amp;#39; for managed applications.   In one command you can run a program and get an anaysis of its CPU costs, as well as GC memory, and Just In Time compilation overhead.   &lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;monitor&amp;#39; command that is designed to make it easy to use the new System.Diagnositics.Eventing.EventSource class.   Running &amp;#39;PerfMonitor monitorPrint EXEFILE&amp;#39; will turn on the event sources present in EXEFILE, run the EXEFILE, and then print the resulting loggint messages.   &lt;br /&gt;&lt;br /&gt;Please see the &lt;a href="http://bcl.codeplex.com/wikipage?title=Perfmonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;Perfmonitor Guide&lt;/a&gt; some &amp;#39;quick starts&amp;#39; on what you can do with the tool, if you are interested follow the download link below.  &lt;br /&gt;&lt;br /&gt;Finally PerfMonitor was design to be &amp;#39;easy to deploy&amp;#39;.  It is just a single EXE, which can be fetched from the &lt;a href="http://bcl.codeplex.com/releases/view/49601"&gt;Download Page&lt;/a&gt;.   It is XCOPY deployable (just copy the EXE out of the ZIP file). and you are ready to run it.   Despite what the &amp;#39;System Requirements window says (which is the max for all code on this site)  PerfMonitor (and TraceEvent) only need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;amp;displaylang=en" class="externalLink"&gt;V3.5 of the .NET Framework&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to be installed.   If you are running Windows Vista or above or have Windows Update running you should have this.  If PerfMonitor fails to load simply go to the link above and download it.   &lt;br /&gt;&lt;br /&gt;PerfMonitor does need at least windows VISTA.  It will not work on XP or win2K3.  &lt;br /&gt;
&lt;h3&gt;See Also &lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="http://bcl.codeplex.com/releases/view/49601"&gt;Download Page&lt;/a&gt; to download&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;PerfMonitor Guide&lt;/a&gt; for a quick look at what PerfMonitor can do before downloading.&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; and &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent%20Class%20Overview&amp;referringTitle=PerfMonitor"&gt;TraceEvent Class Overview&lt;/a&gt; which is the programatic interface that was used to implement PerfMonitor. &lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;a href="http://bcl.codeplex.com/Thread/List.aspx" class="externalLink"&gt;Ask a question&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic" class="externalLink"&gt;File a bug&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>VanceMorrison</author><pubDate>Thu, 03 Mar 2011 19:33:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: PerfMonitor 20110303073311P</guid></item><item><title>New Comment on "Perfmonitor Guide"</title><link>http://bcl.codeplex.com/wikipage?title=Perfmonitor Guide&amp;ANCHOR#C17880</link><description>If you do &amp;#39;perfMonitor start&amp;#39; and the events are collected in perMonitorOutput.etl, how do I get the human readable output&amp;#63; I don&amp;#39;t see that runPrint is an option for &amp;#39;perfMonitor start&amp;#39;.&amp;#10;&amp;#10;Thank you for a great tool.</description><author>KevinBurton</author><pubDate>Thu, 02 Dec 2010 02:36:04 GMT</pubDate><guid isPermaLink="false">New Comment on "Perfmonitor Guide" 20101202023604A</guid></item><item><title>Updated Wiki: PerfMonitor</title><link>http://bcl.codeplex.com/wikipage?title=PerfMonitor&amp;version=16</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;PerfMonitor&lt;/h2&gt;PerfMonitor PerfMonitor is a command-line tool for profiling the system using  &lt;a href="http://msdn.microsoft.com/en-us/library/bb968803(VS.85).aspx" class="externalLink"&gt;Event Tracing for Windows&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (ETW) events.   ETW is the power behind the &lt;a href="http://msdn.microsoft.com/en-us/performance/default.aspx" class="externalLink"&gt;Windows Performance Analyzer&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (also known as the XPerf Tool).    The Windows OS has events for just about anything that you could be interested in from a performance standpoint (CPU usage, Context switched Disk I/O DLL Loads, Blocking, all with stack traces).    In addition the .NET Runtime has events for garbage collection, Just In time Compilation, Assembly loading and more.     PerfMonitor is a gateway to all of this information.   &lt;br /&gt;&lt;br /&gt;While PerfMonitor is a useful tool, it was really designed more as sample code for the &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; library.  This library is the &amp;#39;heart&amp;#39; of PerfMonitor, and PerfMonitor is mostly a command line parser and XML printer layered on top of that.    Nevertheless PerfMonitor has powerful features.  It has  the abilty to turn on and off any ETW provider, and thus can act as a &amp;#39;light weight&amp;#39; controler even if you decide to use tools like XPERF to actually analyze the data.     PerfMonitor also has better CLR support than XPERF currently has.   PerfMonitor can decode the full managed and unmanaged stacks that ETW kernel events provide, as well as do CLR specific analysis (like GC pause time and JIT compilation statstics).&lt;br /&gt;&lt;br /&gt;PerfMonitor has a &amp;#39;analyze&amp;#39; command that is designed to be a &amp;#39;Quick Perf Health Check&amp;#39; for managed applications.   In one command you can run a program and get an anaysis of its CPU costs, as well as GC memory, and Just In Time compilation overhead.   &lt;br /&gt;&lt;br /&gt;Please see the &lt;a href="http://bcl.codeplex.com/wikipage?title=Perfmonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;Perfmonitor Guide&lt;/a&gt; some &amp;#39;quick starts&amp;#39; on what you can do with the tool, if you are interested follow the download link below.  &lt;br /&gt;&lt;br /&gt;Finally PerfMonitor was design to be &amp;#39;easy to deploy&amp;#39;.  It is just a single EXE, which can be fetched from the &lt;a href="http://bcl.codeplex.com/releases/view/49601"&gt;Download Page&lt;/a&gt;.   It is XCOPY deployable (just copy the EXE out of the ZIP file). and you are ready to run it.   Despite what the &amp;#39;System Requirements window says (which is the max for all code on this site)  PerfMonitor (and TraceEvent) only need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;amp;displaylang=en" class="externalLink"&gt;V3.5 of the .NET Framework&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to be installed.   If you are running Windows Vista or above or have Windows Update running you should have this.  If PerfMonitor fails to load simply go to the link above and download it.   &lt;br /&gt;&lt;br /&gt;PerfMonitor does need at least windows VISTA.  It will not work on XP or win2K3.  &lt;br /&gt;
&lt;h3&gt;See Also &lt;/h3&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="http://bcl.codeplex.com/releases/view/49601"&gt;Download Page&lt;/a&gt; to download&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=PerfMonitor%20Guide&amp;referringTitle=PerfMonitor"&gt;PerfMonitor Guide&lt;/a&gt; for a quick look at what PerfMonitor can do before downloading.&lt;/li&gt;
&lt;li&gt; &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent&amp;referringTitle=PerfMonitor"&gt;TraceEvent&lt;/a&gt; and &lt;a href="http://bcl.codeplex.com/wikipage?title=TraceEvent%20Class%20Overview&amp;referringTitle=PerfMonitor"&gt;TraceEvent Class Overview&lt;/a&gt; which is the programatic interface that was used to implement PerfMonitor. &lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;a href="http://bcl.codeplex.com/Thread/List.aspx" class="externalLink"&gt;Ask a question&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic" class="externalLink"&gt;File a bug&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>VanceMorrison</author><pubDate>Thu, 19 Aug 2010 23:54:27 GMT</pubDate><guid isPermaLink="false">Updated Wiki: PerfMonitor 20100819115427P</guid></item><item><title>Updated Wiki: ZipArchive</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive&lt;/h2&gt;The ZipArchive class (along with its partner, ZipArchiveEntry) provide support for reading and writing Zip archives. For some discussion about these APIs, see the following BCL blog posts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/bclteam/archive/2010/06/28/working-with-zip-files-in-net.aspx" class="externalLink"&gt;Discussion on BCL Blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/bclteam/archive/2010/07/29/more-on-zip-in-net-richard-lee.aspx" class="externalLink"&gt;Follow-up to Discussion on BCL Blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Getting started&lt;/h3&gt;
TODO: Replace [#] in links below with actual files&lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve release macro, invalid id.&lt;/span&gt;&lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve release macro, invalid id.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=ZipArchive%20Samples&amp;referringTitle=ZipArchive"&gt;Samples&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=ZipArchive%20Class%20Reference&amp;referringTitle=ZipArchive"&gt;Class Reference&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;a href="http://bcl.codeplex.com/Thread/List.aspx" class="externalLink"&gt;Ask a question&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic" class="externalLink"&gt;File a bug&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Mon, 09 Aug 2010 18:47:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive 20100809064710P</guid></item><item><title>Updated Wiki: ZipArchive</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive&lt;/h2&gt;The ZipArchive class (along with its partner, ZipArchiveEntry) provide support for reading and writing Zip archives. For some discussion about these APIs, see the following BCL blog posts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/bclteam/archive/2010/06/28/working-with-zip-files-in-net.aspx" class="externalLink"&gt;Discussion on BCL Blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/bclteam/archive/2010/07/29/more-on-zip-in-net-richard-lee.aspx" class="externalLink"&gt;Follow-up to Discussion on BCL Blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Getting started&lt;/h3&gt;
&lt;span class="unresolved"&gt;Cannot resolve release macro, invalid id.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=ZipArchive%20Samples&amp;referringTitle=ZipArchive"&gt;Samples&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/wikipage?title=ZipArchive%20Class%20Reference&amp;referringTitle=ZipArchive"&gt;Class Reference&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Having problems?&lt;/h3&gt;
&lt;a href="http://bcl.codeplex.com/Thread/List.aspx" class="externalLink"&gt;Ask a question&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bcl.codeplex.com/workitem/list/basic" class="externalLink"&gt;File a bug&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 22:50:29 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive 20100806105029P</guid></item><item><title>Updated Wiki: ZipArchive Class Reference</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive Class Reference&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive Class&lt;/h2&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;namespace&lt;/span&gt; Microsoft.Experimental.IO.Compression
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; ZipArchive
    {
        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Opens a ZipArchive on the specified path for reading. The specified file&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     is opened with FileMode.Open.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     path:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         A string specifying the path on the filesystem to open the archive on.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path is permitted to specify relative or absolute path information.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         Relative path information is interpreted as relative to the current working&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path is a zero-length string, contains only white space, or contains one or&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         more invalid characters as defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path, file name, or both exceed the system-defined maximum&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         length. For example, on Windows-based platforms, paths must be less than&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         248 characters, and file names must be less than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path is invalid, (for example, it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error occurred while opening the file. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path specified a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     FileNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The file specified in path was not found. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path is in an invalid format. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified file could not be interpreted as a Zip file.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchive(String path);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Opens a ZipArchive on the specified path in the specified ZipArchiveMode mode.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     path:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         A string specifying the path on the filesystem to open the archive on.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path is permitted to specify relative or absolute path information.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         Relative path information is interpreted as relative to the current working&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     mode:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         See the description of the ZipArchiveMode enum. If Read is specified, the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         file is opened with System.IO.FileMode.Open, and will throw a FileNotFoundException&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         if the file does not exist. If Create is specified, the file is opened with&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         System.IO.FileMode.CreateNew, and will throw a System.IO.IOException if the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         file already exists. If Update is specified, the file is opened with&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         System.IO.FileMode.OpenOrCreate. If the file exists and is Zip file, its entries&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         will become accessible, and may be modified, and new entries may be created.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         If the file exists and is not a Zip file, a ZipArchiveException will be thrown.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         If the file exists and is empty or does not exist, a new Zip file will be created.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         Note that creating a Zip file with the ZipArchiveMode.Create mode is more efficient&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         when creating a new Zip file.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path is a zero-length string, contains only white space, or contains one or more&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         invalid characters as defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path, file name, or both exceed the system-defined maximum length.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         For example, on Windows-based platforms, paths must be less than 248 characters,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         and file names must be less than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path is invalid, (for example, it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error occurred while opening the file. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path specified a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentOutOfRangeException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode specified an invalid value.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     FileNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The file specified in path was not found. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         path is in an invalid format. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified file could not be interpreted as a Zip file.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is Update and an entry is missing from the archive or&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         is corrupt and cannot be read.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is Update and an entry is too large to fit into memory.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchive(String path, ZipArchiveMode mode);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Initializes a new instance of ZipArchive on the given stream for reading.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     stream:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream containing the archive to be read.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream is already closed or does not support reading.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The contents of the stream could not be interpreted as a Zip archive.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchive(Stream stream);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Initializes a new instance of ZipArchive on the given stream in the specified mode.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     stream:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The input or output stream.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     mode:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         See the description of the ZipArchiveMode enum. Read requires the stream to support&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         reading, Create requires the stream to support writing, and Update requires the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         stream to support reading, writing, and seeking.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream is already closed. -or- mode is incompatible with the capabilities&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         of the stream.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentOutOfRangeException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode specified an invalid value.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The contents of the stream could not be interpreted as a Zip file.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is Update and an entry is missing from the archive or is corrupt and&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         cannot be read.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is Update and an entry is too large to fit into memory.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchive(Stream stream, ZipArchiveMode mode);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Initializes a new instance of ZipArchive on the given stream in the specified mode,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     specifying whether to leave the stream open.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     stream:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The input or output stream.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     mode:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         See the description of the ZipArchiveMode enum. Read requires the stream to&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         support reading, Create requires the stream to support writing, and Update&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         requires the stream to support reading, writing, and seeking.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     leaveOpen:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         true to leave the stream open upon disposing the ZipArchive, otherwise false.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream is already closed.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is incompatible with the capabilities of the stream.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The stream is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentOutOfRangeException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode specified an invalid value.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The contents of the stream could not be interpreted as a Zip file.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is Update and an entry is missing from the archive or is corrupt and&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         cannot be read.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         mode is Update and an entry is too large to fit into memory.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchive(Stream stream, ZipArchiveMode mode, Boolean leaveOpen);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The collection of entries that are currently in the ZipArchive. This may not&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     accurately represent the actual entries that are present in the underlying file&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     or stream.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive does not support reading.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive has already been closed.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The Zip archive is corrupt and the entries cannot be retrieved.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ReadOnlyCollection&amp;lt;ZipArchiveEntry&amp;gt; Entries;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The ZipArchiveMode that the ZipArchive was initialized with.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchiveMode Mode;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Releases the unmanaged resources used by ZipArchive and optionally finishes&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     writing the archive and releases the managed resources.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     disposing:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         true to finish writing the archive and release unmanaged and managed resources,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         false to release only unmanaged resources.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;protected&lt;/span&gt; &lt;span style="color:Blue;"&gt;virtual&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Dispose(Boolean disposing);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Creates an empty entry in the Zip archive with the specified entry name. There&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     are no restrictions on the names of entries. The last write time of the entry&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     is set to the current time. If an entry with the specified name already exists&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     in the archive, a second entry will be created that has an identical name.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         A path relative to the root of the archive, indicating the name of the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         entry to be created.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         entryName is a zero-length string.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         entryName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive does not support writing.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive has already been closed.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Returns:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     A wrapper for the newly created file entry in the archive.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchiveEntry CreateEntry(String entryName);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Finishes writing the archive and releases all resources used by the ZipArchive&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     object, unless the object was constructed with leaveOpen as true. Any streams&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     from opened entries in the ZipArchive still open will throw exceptions on&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     subsequent writes, as the underlying streams will have been closed.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Dispose();

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Retrieves a wrapper for the file entry in the archive with the specified name.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Names are compared using ordinal comparison. If there are multiple entries in&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the archive with the specified name, the first one found will be returned.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         A path relative to the root of the archive, identifying the desired entry.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         entryName is a zero-length string.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         entryName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive does not support reading.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive has already been closed.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The Zip archive is corrupt and the entries cannot be retrieved.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Returns:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     A wrapper for the file entry in the archive. If no entry in the archive exists&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     with the specified name, null will be returned.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchiveEntry GetEntry(String entryName);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Adds a file from the file system to the archive under the specified entry name.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The new entry in the archive will contain the contents of the file. The last&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     write time of the archive entry is set to the last write time of the file on&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the file system. If an entry with the specified name already exists in the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     archive, a second entry will be created that has an identical name. If the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     specified source file has an invalid last modified time, the first datetime&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     representable in the Zip timestamp format (midnight on January 1, 1980) will&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     be used.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     sourceFileName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path to the file on the file system to be copied from. The path is&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     permitted to specify relative or absolute path information. Relative path&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     information is interpreted as relative to the current working directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The name of the entry to be created.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceFileName is a zero-length string, contains only white space, or&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     contains one or more invalid characters as defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         entryName is a zero-length string.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceFileName or entryName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         In sourceFileName, the specified path, file name, or both exceed the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         system-defined maximum length. For example, on Windows-based platforms,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         paths must be less than 248 characters, and file names must be less than&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified sourceFileName is invalid, (for example, it is on an&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error occurred while opening the file specified by sourceFileName.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceFileName specified a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     FileNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The file specified in sourceFileName was not found. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceFileName is in an invalid format or the ZipArchive does not support&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         writing.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive has already been closed.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Returns:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     A wrapper for the newly created entry.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchiveEntry CreateEntryFromFile(String sourceFileName, String entryName);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Extracts all of the files in the archive to a directory on the file system.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The specified directory must not exist. This method will create all subdirectories&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     and the specified directory. If there is an error while extracting the archive,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the archive will remain partially extracted. Each entry will be extracted such&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     that the extracted file has the same relative path to destinationDirectoryName&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     as the entry has to the root of the archive. If a file to be archived has an&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     invalid last modified time, the first datetime representable in the Zip timestamp&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     format (midnight on January 1, 1980) will be used.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationDirectoryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path to the directory on the file system. The directory specified must not&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         exist. The path is permitted to specify relative or absolute path information.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         Relative path information is interpreted as relative to the current working&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationDirectoryName is a zero-length string, contains only white space,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         or contains one or more invalid characters as defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationDirectoryName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path, file name, or both exceed the system-defined maximum&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         length. For example, on Windows-based platforms, paths must be less than&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         248 characters, and file names must be less than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path is invalid, (for example, it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The directory specified by destinationDirectoryName already exists.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry’s name is zero-length, contains only white space, or contains&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         one or more invalid characters as defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         Extracting an archive entry would have resulted in a destination file that is&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         outside destinationDirectoryName (for example, if the entry name contains&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         parent directory accessors).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry has the same name as an already extracted entry from the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         same archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationDirectoryName is in an invalid format. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry was not found or was corrupt.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry has been compressed using a compression method that is not&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         supported.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; ExtractToDirectory(String destinationDirectoryName);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Creates a Zip archive at the path destinationArchive that contains the files and&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     directories in the directory specified by sourceDirectoryName. The directory&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     structure is preserved in the archive, and a recursive search is done for files&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     to be archived. The archive must not exist. If the directory is empty, an empty&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     archive will be created. If a file in the directory cannot be added to the archive,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the archive will be left incomplete and invalid and the method will throw an&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     exception. This method optionally includes the base directory in the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     If an error is encountered while adding files to the archive, this method will&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     stop adding files and leave the archive in an invalid state. The paths are&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     permitted to specify relative or absolute path information. Relative path&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     information is interpreted as relative to the current working directory. If a&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     file in the archive has data in the last write time field that is not a valid&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Zip timestamp, an indicator value of 1980 January 1 at midnight will be used for&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the file’s last modified time.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     sourceDirectoryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path to the directory on the file system to be archived.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationArchive:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The name of the archive to be created.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     includeBaseDirectory:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         True to indicate that a directory named sourceDirectoryName should be included&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         at the root of the archive. False to indicate that the files and directories&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         in sourceDirectoryName should be included directly in the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceDirectoryName or destinationArchive is a zero-length string, contains&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         only white space, or contains one or more invalid characters as defined by&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceDirectoryName or destinationArchive is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         In sourceDirectoryName or destinationArchive, the specified path, file name,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         or both exceed the system-defined maximum length. For example, on Windows&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         based platforms, paths must be less than 248 characters, and file names&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         must be less than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path specified in sourceDirectoryName or destinationArchive is invalid,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         (for example, it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The directory specified by sourceDirectoryName does not exist.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationArchive exists.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error occurred while opening a file to be archived.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationArchive specified a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceDirectoryName or destinationArchive is in an invalid format.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; CreateFromDirectory(String sourceDirectoryName,
                                               String destinationArchive,
                                               Boolean includeBaseDirectory);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Creates a Zip archive at the path destinationArchive that contains the files&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     and directories in the directory specified by sourceDirectoryName. The directory&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     structure is preserved in the archive, and a recursive search is done for files&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     to be archived. The archive must not exist. If the directory is empty, an empty&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     archive will be created. If a file in the directory cannot be added to the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     archive, the archive will be left incomplete and invalid and the method will&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     throw an exception. This method does not include the base directory in the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     If an error is encountered while adding files to the archive, this method will&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     stop adding files and leave the archive in an invalid state. The paths are&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     permitted to specify relative or absolute path information. Relative path&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     information is interpreted as relative to the current working directory. If a&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     file in the archive has data in the last write time field that is not a valid Zip&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     timestamp, an indicator value of 1980 January 1 at midnight will be used for the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     file’s last modified time.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     sourceDirectoryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path to the directory on the file system to be archived. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationArchive:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The name of the archive to be created.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceDirectoryName or destinationArchive is a zero-length string, contains&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         only white space, or contains one or more invalid characters as defined by&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceDirectoryName or destinationArchive is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         In sourceDirectoryName or destinationArchive, the specified path, file name,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         or both exceed the system-defined maximum length. For example, on Windows-based&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         platforms, paths must be less than 248 characters, and file names must be less&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path specified in sourceDirectoryName or destinationArchive is invalid,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         (for example, it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The directory specified by sourceDirectoryName does not exist.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationArchive exists.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error occurred while opening a file to be archived.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationArchive specified a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceDirectoryName or destinationArchive is in an invalid format.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; CreateFromDirectory(String sourceDirectoryName, String destinationArchive);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Extracts all of the files in the specified archive to a directory on the file&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     system. The specified directory must not exist. This method will create all&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     subdirectories and the specified directory. If there is an error while extracting&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the archive, the archive will remain partially extracted. Each entry will be&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     extracted such that the extracted file has the same relative path to the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationDirectoryName as the entry has to the archive. The path is permitted&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     to specify relative or absolute path information. Relative path information is&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     interpreted as relative to the current working directory. If a file to be archived&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     has an invalid last modified time, the first datetime representable in the Zip&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     timestamp format (midnight on January 1, 1980) will be used.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     sourceArchive:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path to the archive on the file system that is to be extracted.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationDirectoryName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path to the directory on the file system. The directory specified must&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         not exist, but the directory that it is contained in must exist.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceArchive or destinationDirectoryName is a zero-length string, contains&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         only white space, or contains one or more invalid characters as defined by&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceArchive or destinationDirectoryName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceArchive or destinationDirectoryName specifies a path, file name, or&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         both exceed the system-defined maximum length. For example, on Windows-based&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         platforms, paths must be less than 248 characters, and file names must be less&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path specified by sourceArchive or destinationDirectoryName is invalid,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         (for example, it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The directory specified by destinationDirectoryName already exists.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error has occurred.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry’s name is zero-length, contains only white space, or&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         contains one or more invalid characters as defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         Extracting an archive entry would result in a file destination that is&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         outside the destination directory (for example, because of parent directory&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         accessors).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry has the same name as an already extracted entry from the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         same archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceArchive or destinationDirectoryName is in an invalid format. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     FileNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         sourceArchive was not found.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The archive specified by sourceArchive: Is not a valid ZipArchive&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry was not found or was corrupt.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An archive entry has been compressed using a compression method that is&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         not supported.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; ExtractToDirectory(String sourceArchive, String destinationDirectoryName);
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;ZipArchiveEntry Class&lt;/h2&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;namespace&lt;/span&gt; Microsoft.Experimental.IO.Compression
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; ZipArchiveEntry
    {
        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The last write time of the entry as stored in the Zip archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     When setting this property, the DateTime will be converted to&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the Zip timestamp format, which supports a resolution of two&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     seconds. If the data in the last write time field is not a&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     valid Zip timestamp, an indicator value of 1980 January 1&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     at midnight will be returned.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An attempt to set this property was made, but the ZipArchive&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         that this entry belongs to was opened in read-only mode.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentOutOfRangeException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An attempt was made to set this property to a value that&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         cannot be represented in the Zip timestamp format. The&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         earliest date/time that can be represented is 1980&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         January 1 0:00:00 (midnight), and the last date/time that&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         can be represented is 2107 December 31 23:59:58 (one second&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         before midnight).&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; DateTimeOffset LastWriteTime;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The relative path of the entry as stored in the Zip archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Note that Zip archives allow any string to be the path of the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entry, including invalid and absolute paths.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; String FullName;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The filename of the entry. This is equivalent to the substring&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     of Fullname that follows the final directory separator character.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; String Name;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The compressed size of the entry. If the archive that the entry&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     belongs to is in Create mode, attempts to get this property will&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     always throw an exception. If the archive that the entry belongs&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     to is in update mode, this property will only be valid if the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entry has not been opened. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidOperationException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         This property is not available because the entry has been&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         written to or modified.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Int64 CompressedLength;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The uncompressed size of the entry. This property is not valid&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     in Create mode, and it is only valid in Update mode if the entry&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     has not been opened.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidOperationException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         This property is not available because the entry has been&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         written to or modified.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Int64 Length;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The ZipArchive that this entry belongs to. If this entry has&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     been deleted, this will return null.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ZipArchive Archive;

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Opens the entry. If the archive that the entry belongs to was&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     opened in Read mode, the returned stream will be readable, and&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     it may or may not be seekable. If Create mode, the returned stream&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     will be writeable and not seekable. If Update mode, the returned&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     stream will be readable, writeable, seekable, and support SetLength.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is already currently open for writing.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry has been deleted from the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The archive that this entry belongs to was opened in&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         ZipArchiveMode.Create, and this entry has already been written&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         to once.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is missing from the archive or is corrupt and cannot&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         be read.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry has been compressed using a compression method that&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         is not supported.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to has been disposed.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Returns:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     A Stream that represents the contents of the entry.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Stream Open();

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Deletes the entry from the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is already open for reading or writing.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to was opened in a mode&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         other than ZipArchiveMode.Update. &lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to has been disposed.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Delete();

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Returns the FullName of the entry.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Returns:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     FullName of the entry&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;override&lt;/span&gt; String ToString();

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Creates a file on the file system with the entry’s contents and the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     specified name. The last write time of the file is set to the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entry’s last write time. This method does allows overwriting of&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     an existing file with the same name.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationFileName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The name of the file that will hold the contents of the entry.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path is permitted to specify relative or absolute path&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         information. Relative path information is interpreted as&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         relative to the current working directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     overwrite:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         True to indicate overwrite.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName is a zero-length string, contains only&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         white space, or contains one or more invalid characters as&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         defined by InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName specifies a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path, file name, or both exceed the system-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         defined maximum length. For example, on Windows-based platforms,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         paths must be less than 248 characters, and file names must be&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         less than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path specified in destinationFileName is invalid (for example,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName exists and overwrite is false.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error has occurred.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is currently open for writing.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry has been deleted from the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName is in an invalid format&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to was opened in a&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         write-only mode.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is missing from the archive or is corrupt and cannot&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         be read&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry has been compressed using a compression method that&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         is not supported.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to has been disposed.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; ExtractToFile(String destinationFileName, Boolean overwrite);

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Creates a file on the file system with the entry’s contents and the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     specified name. The last write time of the file is set to the entry’s&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     last write time. This method does not allow overwriting of an existing&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     file with the same name. Attempting to extract explicit directories&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     (entries with names that end in directory separator characters) will&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     not result in the creation of a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Parameters:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     destinationFileName:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The name of the file that will hold the contents of the entry.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path is permitted to specify relative or absolute path&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         information. Relative path information is interpreted as&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         relative to the current working directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;// &lt;/span&gt;
        &lt;span style="color:Green;"&gt;// Exceptions:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     UnauthorizedAccessException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The caller does not have the required permission.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName is a zero-length string, contains only white&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         space, or contains one or more invalid characters as defined by&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         InvalidPathChars.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName specifies a directory.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ArgumentNullException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName is null.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     PathTooLongException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The specified path, file name, or both exceed the system-defined&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         maximum length. For example, on Windows-based platforms, paths&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         must be less than 248 characters, and file names must be less&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         than 260 characters.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     DirectoryNotFoundException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The path specified in destinationFileName is invalid (for example,&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         it is on an unmapped drive).&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     IOException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName exists.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         An I/O error has occurred.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is currently open for writing.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry has been deleted from the archive.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     NotSupportedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         destinationFileName is in an invalid format&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to was opened in a&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         write-only mode.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     InvalidDataException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry is missing from the archive or is corrupt and cannot&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         be read&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         -or-&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The entry has been compressed using a compression method that&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         is not supported.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     ObjectDisposedException:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//         The ZipArchive that this entry belongs to has been disposed.&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; ExtractToFile(String destinationFileName);
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;ZipArchiveMode Enum&lt;/h2&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;namespace&lt;/span&gt; Microsoft.Experimental.IO.Compression
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;enum&lt;/span&gt; ZipArchiveMode
    {
        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Only reading entries from the archive is permitted. If the underlying&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     file or stream is seekable, then files will be read from the archive&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     on-demand as they are requested. If the underlying file or stream is not&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     seekable, the entire archive will be held in memory. Requires that the&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     underlying file or stream is readable.&lt;/span&gt;
        Read,

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Only supports the creation of new archives. Only writing to newly created&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     entries in the archive is permitted. Each entry in the archive can only&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     be opened for writing once. If only one entry is written to at a time, data&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     will be written to the underlying stream or file as soon as it is available.&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     The underlying stream must be writeable, but need not be seekable.&lt;/span&gt;
        Create,

        &lt;span style="color:Green;"&gt;// Summary:&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     Reading and writing from entries in the archive is permitted. Requires that&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     the contents of the entire archive be held in memory. The underlying file&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     or stream must be readable, writeable and seekable. No data will be written&lt;/span&gt;
        &lt;span style="color:Green;"&gt;//     to the underlying file or stream until the archive is disposed.&lt;/span&gt;
        Update
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 22:50:00 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive Class Reference 20100806105000P</guid></item><item><title>Updated Wiki: ZipArchive Class Reference</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive Class Reference&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive Class&lt;/h2&gt;
&lt;pre&gt;namespace Microsoft.Experimental.IO.Compression
{
    public class ZipArchive
    {
        // Summary:
        //     Opens a ZipArchive on the specified path for reading. The specified file
        //     is opened with FileMode.Open.
        // 
        // Parameters:
        //     path:
        //         A string specifying the path on the filesystem to open the archive on.
        //         The path is permitted to specify relative or absolute path information.
        //         Relative path information is interpreted as relative to the current working
        //         directory.
        //
        // Exceptions
        //     ArgumentException:
        //         path is a zero-length string, contains only white space, or contains one or
        //         more invalid characters as defined by InvalidPathChars.
        //     ArgumentNullException:
        //         path is null.
        //     PathTooLongException:
        //         The specified path, file name, or both exceed the system-defined maximum
        //         length. For example, on Windows-based platforms, paths must be less than
        //         248 characters, and file names must be less than 260 characters.
        //     DirectoryNotFoundException:
        //         The specified path is invalid, (for example, it is on an unmapped drive).
        //     IOException:
        //         An I/O error occurred while opening the file. 
        //     UnauthorizedAccessException:
        //         path specified a directory.
        //         -or-
        //         The caller does not have the required permission.
        //     FileNotFoundException:
        //         The file specified in path was not found. 
        //     NotSupportedException:
        //         path is in an invalid format. 
        //     InvalidDataException:
        //         The specified file could not be interpreted as a Zip file.
        public ZipArchive(String path);

        // Summary:
        //     Opens a ZipArchive on the specified path in the specified ZipArchiveMode mode.
        // 
        // Parameters:
        //     path:
        //         A string specifying the path on the filesystem to open the archive on.
        //         The path is permitted to specify relative or absolute path information.
        //         Relative path information is interpreted as relative to the current working
        //         directory.
        //     mode:
        //         See the description of the ZipArchiveMode enum. If Read is specified, the
        //         file is opened with System.IO.FileMode.Open, and will throw a FileNotFoundException
        //         if the file does not exist. If Create is specified, the file is opened with
        //         System.IO.FileMode.CreateNew, and will throw a System.IO.IOException if the
        //         file already exists. If Update is specified, the file is opened with
        //         System.IO.FileMode.OpenOrCreate. If the file exists and is Zip file, its entries
        //         will become accessible, and may be modified, and new entries may be created.
        //         If the file exists and is not a Zip file, a ZipArchiveException will be thrown.
        //         If the file exists and is empty or does not exist, a new Zip file will be created.
        //         Note that creating a Zip file with the ZipArchiveMode.Create mode is more efficient
        //         when creating a new Zip file.
        // 
        // Exceptions
        //     ArgumentException:
        //         path is a zero-length string, contains only white space, or contains one or more
        //         invalid characters as defined by InvalidPathChars.
        //     ArgumentNullException:
        //         path is null.
        //     PathTooLongException:
        //         The specified path, file name, or both exceed the system-defined maximum length.
        //         For example, on Windows-based platforms, paths must be less than 248 characters,
        //         and file names must be less than 260 characters.
        //     DirectoryNotFoundException:
        //         The specified path is invalid, (for example, it is on an unmapped drive).
        //     IOException:
        //         An I/O error occurred while opening the file. 
        //     UnauthorizedAccessException:
        //         path specified a directory.
        //         -or-
        //         The caller does not have the required permission.
        //     ArgumentOutOfRangeException:
        //         mode specified an invalid value.
        //     FileNotFoundException:
        //         The file specified in path was not found. 
        //     NotSupportedException:
        //         path is in an invalid format. 
        //     InvalidDataException:
        //         The specified file could not be interpreted as a Zip file.
        //         -or-
        //         mode is Update and an entry is missing from the archive or
        //         is corrupt and cannot be read.
        //         -or-
        //         mode is Update and an entry is too large to fit into memory.
        public ZipArchive(String path, ZipArchiveMode mode);

        // Summary:
        //     Initializes a new instance of ZipArchive on the given stream for reading.
        // 
        // Parameters:
        //     stream:
        //         The stream containing the archive to be read.
        // 
        // Exceptions
        //     ArgumentException:
        //         The stream is already closed or does not support reading.
        //     ArgumentNullException:
        //         The stream is null.
        //     InvalidDataException:
        //         The contents of the stream could not be interpreted as a Zip archive.
        public ZipArchive(Stream stream);

        // Summary:
        //     Initializes a new instance of ZipArchive on the given stream in the specified mode.
        // 
        // Parameters:
        //     stream:
        //         The input or output stream.
        //     mode:
        //         See the description of the ZipArchiveMode enum. Read requires the stream to support
        //         reading, Create requires the stream to support writing, and Update requires the
        //         stream to support reading, writing, and seeking.
        // 
        // Exceptions
        //     ArgumentException:
        //         The stream is already closed. -or- mode is incompatible with the capabilities
        //         of the stream.
        //     ArgumentNullException:
        //         The stream is null.
        //     ArgumentOutOfRangeException:
        //         mode specified an invalid value.
        //     InvalidDataException:
        //         The contents of the stream could not be interpreted as a Zip file.
        //         -or-
        //         mode is Update and an entry is missing from the archive or is corrupt and
        //         cannot be read.
        //         -or-
        //         mode is Update and an entry is too large to fit into memory.
        public ZipArchive(Stream stream, ZipArchiveMode mode);

        // Summary:
        //     Initializes a new instance of ZipArchive on the given stream in the specified mode,
        //     specifying whether to leave the stream open.
        // 
        // Parameters:
        //     stream:
        //         The input or output stream.
        //     mode:
        //         See the description of the ZipArchiveMode enum. Read requires the stream to
        //         support reading, Create requires the stream to support writing, and Update
        //         requires the stream to support reading, writing, and seeking.
        //     leaveOpen:
        //         true to leave the stream open upon disposing the ZipArchive, otherwise false.
        // 
        // Exceptions
        //     ArgumentException:
        //         The stream is already closed.
        //         -or-
        //         mode is incompatible with the capabilities of the stream.
        //     ArgumentNullException:
        //         The stream is null.
        //     ArgumentOutOfRangeException:
        //         mode specified an invalid value.
        //     InvalidDataException:
        //         The contents of the stream could not be interpreted as a Zip file.
        //         -or-
        //         mode is Update and an entry is missing from the archive or is corrupt and
        //         cannot be read.
        //         -or-
        //         mode is Update and an entry is too large to fit into memory.
        public ZipArchive(Stream stream, ZipArchiveMode mode, Boolean leaveOpen);

        // Summary:
        //     The collection of entries that are currently in the ZipArchive. This may not
        //     accurately represent the actual entries that are present in the underlying file
        //     or stream.
        // 
        // Exceptions
        //     NotSupportedException:
        //         The ZipArchive does not support reading.
        //     ObjectDisposedException:
        //         The ZipArchive has already been closed.
        //     InvalidDataException:
        //         The Zip archive is corrupt and the entries cannot be retrieved.
        public ReadOnlyCollection&amp;lt;ZipArchiveEntry&amp;gt; Entries;

        // Summary:
        //     The ZipArchiveMode that the ZipArchive was initialized with.
        public ZipArchiveMode Mode;

        // Summary:
        //     Releases the unmanaged resources used by ZipArchive and optionally finishes
        //     writing the archive and releases the managed resources.
        // 
        // Parameters:
        //     disposing:
        //         true to finish writing the archive and release unmanaged and managed resources,
        //         false to release only unmanaged resources.
        protected virtual void Dispose(Boolean disposing);

        // Summary:
        //     Creates an empty entry in the Zip archive with the specified entry name. There
        //     are no restrictions on the names of entries. The last write time of the entry
        //     is set to the current time. If an entry with the specified name already exists
        //     in the archive, a second entry will be created that has an identical name.
        // 
        // Parameters:
        //     entryName:
        //         A path relative to the root of the archive, indicating the name of the
        //         entry to be created.
        // 
        // Exceptions
        //     ArgumentException:
        //         entryName is a zero-length string.
        //     ArgumentNullException:
        //         entryName is null.
        //     NotSupportedException:
        //         The ZipArchive does not support writing.
        //     ObjectDisposedException:
        //         The ZipArchive has already been closed.
        // 
        // Returns:
        //     A wrapper for the newly created file entry in the archive.
        public ZipArchiveEntry CreateEntry(String entryName);

        // Summary:
        //     Finishes writing the archive and releases all resources used by the ZipArchive
        //     object, unless the object was constructed with leaveOpen as true. Any streams
        //     from opened entries in the ZipArchive still open will throw exceptions on
        //     subsequent writes, as the underlying streams will have been closed.
        public void Dispose();

        // Summary:
        //     Retrieves a wrapper for the file entry in the archive with the specified name.
        //     Names are compared using ordinal comparison. If there are multiple entries in
        //     the archive with the specified name, the first one found will be returned.
        // 
        // Parameters:
        //     entryName:
        //         A path relative to the root of the archive, identifying the desired entry.
        // 
        // Exceptions
        //     ArgumentException:
        //         entryName is a zero-length string.
        //     ArgumentNullException:
        //         entryName is null.
        //     NotSupportedException:
        //         The ZipArchive does not support reading.
        //     ObjectDisposedException:
        //         The ZipArchive has already been closed.
        //     InvalidDataException:
        //         The Zip archive is corrupt and the entries cannot be retrieved.
        // 
        // Returns:
        //     A wrapper for the file entry in the archive. If no entry in the archive exists
        //     with the specified name, null will be returned.
        public ZipArchiveEntry GetEntry(String entryName);

        // Summary:
        //     Adds a file from the file system to the archive under the specified entry name.
        //     The new entry in the archive will contain the contents of the file. The last
        //     write time of the archive entry is set to the last write time of the file on
        //     the file system. If an entry with the specified name already exists in the
        //     archive, a second entry will be created that has an identical name. If the
        //     specified source file has an invalid last modified time, the first datetime
        //     representable in the Zip timestamp format (midnight on January 1, 1980) will
        //     be used.
        // 
        // Parameters:
        //     sourceFileName:
        //         The path to the file on the file system to be copied from. The path is
        //     permitted to specify relative or absolute path information. Relative path
        //     information is interpreted as relative to the current working directory.
        //     entryName:
        //         The name of the entry to be created.
        // 
        // Exceptions
        //     ArgumentException:
        //         sourceFileName is a zero-length string, contains only white space, or
        //     contains one or more invalid characters as defined by InvalidPathChars.
        //         -or-
        //         entryName is a zero-length string.
        //     ArgumentNullException:
        //         sourceFileName or entryName is null.
        //     PathTooLongException:
        //         In sourceFileName, the specified path, file name, or both exceed the
        //         system-defined maximum length. For example, on Windows-based platforms,
        //         paths must be less than 248 characters, and file names must be less than
        //         260 characters.
        //     DirectoryNotFoundException:
        //         The specified sourceFileName is invalid, (for example, it is on an
        //         unmapped drive).
        //     IOException:
        //         An I/O error occurred while opening the file specified by sourceFileName.
        //     UnauthorizedAccessException:
        //         sourceFileName specified a directory.
        //         -or-
        //         The caller does not have the required permission.
        //     FileNotFoundException:
        //         The file specified in sourceFileName was not found. 
        //     NotSupportedException:
        //         sourceFileName is in an invalid format or the ZipArchive does not support
        //         writing.
        //     ObjectDisposedException:
        //         The ZipArchive has already been closed.
        // 
        // Returns:
        //     A wrapper for the newly created entry.
        public ZipArchiveEntry CreateEntryFromFile(String sourceFileName, String entryName);

        // Summary:
        //     Extracts all of the files in the archive to a directory on the file system.
        //     The specified directory must not exist. This method will create all subdirectories
        //     and the specified directory. If there is an error while extracting the archive,
        //     the archive will remain partially extracted. Each entry will be extracted such
        //     that the extracted file has the same relative path to destinationDirectoryName
        //     as the entry has to the root of the archive. If a file to be archived has an
        //     invalid last modified time, the first datetime representable in the Zip timestamp
        //     format (midnight on January 1, 1980) will be used.
        // 
        // Parameters:
        //     destinationDirectoryName:
        //         The path to the directory on the file system. The directory specified must not
        //         exist. The path is permitted to specify relative or absolute path information.
        //         Relative path information is interpreted as relative to the current working
        //         directory.
        // 
        // Exceptions
        //     ArgumentException:
        //         destinationDirectoryName is a zero-length string, contains only white space,
        //         or contains one or more invalid characters as defined by InvalidPathChars.
        //     ArgumentNullException:
        //         destinationDirectoryName is null.
        //     PathTooLongException:
        //         The specified path, file name, or both exceed the system-defined maximum
        //         length. For example, on Windows-based platforms, paths must be less than
        //         248 characters, and file names must be less than 260 characters.
        //     DirectoryNotFoundException:
        //         The specified path is invalid, (for example, it is on an unmapped drive).
        //     IOException:
        //         The directory specified by destinationDirectoryName already exists.
        //         -or-
        //         An archive entry’s name is zero-length, contains only white space, or contains
        //         one or more invalid characters as defined by InvalidPathChars.
        //         -or-
        //         Extracting an archive entry would have resulted in a destination file that is
        //         outside destinationDirectoryName (for example, if the entry name contains
        //         parent directory accessors).
        //         -or-
        //         An archive entry has the same name as an already extracted entry from the
        //         same archive.
        //     UnauthorizedAccessException:
        //         The caller does not have the required permission.
        //     NotSupportedException:
        //         destinationDirectoryName is in an invalid format. 
        //     InvalidDataException:
        //         An archive entry was not found or was corrupt.
        //         -or-
        //         An archive entry has been compressed using a compression method that is not
        //         supported.
        public void ExtractToDirectory(String destinationDirectoryName);

        // Summary:
        //     Creates a Zip archive at the path destinationArchive that contains the files and
        //     directories in the directory specified by sourceDirectoryName. The directory
        //     structure is preserved in the archive, and a recursive search is done for files
        //     to be archived. The archive must not exist. If the directory is empty, an empty
        //     archive will be created. If a file in the directory cannot be added to the archive,
        //     the archive will be left incomplete and invalid and the method will throw an
        //     exception. This method optionally includes the base directory in the archive.
        //     If an error is encountered while adding files to the archive, this method will
        //     stop adding files and leave the archive in an invalid state. The paths are
        //     permitted to specify relative or absolute path information. Relative path
        //     information is interpreted as relative to the current working directory. If a
        //     file in the archive has data in the last write time field that is not a valid
        //     Zip timestamp, an indicator value of 1980 January 1 at midnight will be used for
        //     the file’s last modified time.
        // 
        // Parameters:
        //     sourceDirectoryName:
        //         The path to the directory on the file system to be archived.
        //     destinationArchive:
        //         The name of the archive to be created.
        //     includeBaseDirectory:
        //         True to indicate that a directory named sourceDirectoryName should be included
        //         at the root of the archive. False to indicate that the files and directories
        //         in sourceDirectoryName should be included directly in the archive.
        // 
        // Exceptions
        //     ArgumentException:
        //         sourceDirectoryName or destinationArchive is a zero-length string, contains
        //         only white space, or contains one or more invalid characters as defined by
        //         InvalidPathChars.
        //     ArgumentNullException:
        //         sourceDirectoryName or destinationArchive is null.
        //     PathTooLongException:
        //         In sourceDirectoryName or destinationArchive, the specified path, file name,
        //         or both exceed the system-defined maximum length. For example, on Windows
        //         based platforms, paths must be less than 248 characters, and file names
        //         must be less than 260 characters.
        //     DirectoryNotFoundException:
        //         The path specified in sourceDirectoryName or destinationArchive is invalid,
        //         (for example, it is on an unmapped drive).
        //         -or-
        //         The directory specified by sourceDirectoryName does not exist.
        //     IOException:
        //         destinationArchive exists.
        //         -or-
        //         An I/O error occurred while opening a file to be archived.
        //     UnauthorizedAccessException:
        //         destinationArchive specified a directory.
        //         -or-
        //         The caller does not have the required permission.
        //     NotSupportedException:
        //         sourceDirectoryName or destinationArchive is in an invalid format.
        public static void CreateFromDirectory(String sourceDirectoryName,
                                               String destinationArchive,
                                               Boolean includeBaseDirectory);

        // Summary:
        //     Creates a Zip archive at the path destinationArchive that contains the files
        //     and directories in the directory specified by sourceDirectoryName. The directory
        //     structure is preserved in the archive, and a recursive search is done for files
        //     to be archived. The archive must not exist. If the directory is empty, an empty
        //     archive will be created. If a file in the directory cannot be added to the
        //     archive, the archive will be left incomplete and invalid and the method will
        //     throw an exception. This method does not include the base directory in the archive.
        //     If an error is encountered while adding files to the archive, this method will
        //     stop adding files and leave the archive in an invalid state. The paths are
        //     permitted to specify relative or absolute path information. Relative path
        //     information is interpreted as relative to the current working directory. If a
        //     file in the archive has data in the last write time field that is not a valid Zip
        //     timestamp, an indicator value of 1980 January 1 at midnight will be used for the
        //     file’s last modified time.
        // 
        // Parameters:
        //     sourceDirectoryName:
        //         The path to the directory on the file system to be archived. 
        //     destinationArchive:
        //         The name of the archive to be created.
        // 
        // Exceptions
        //     ArgumentException:
        //         sourceDirectoryName or destinationArchive is a zero-length string, contains
        //         only white space, or contains one or more invalid characters as defined by
        //         InvalidPathChars.
        //     ArgumentNullException:
        //         sourceDirectoryName or destinationArchive is null.
        //     PathTooLongException:
        //         In sourceDirectoryName or destinationArchive, the specified path, file name,
        //         or both exceed the system-defined maximum length. For example, on Windows-based
        //         platforms, paths must be less than 248 characters, and file names must be less
        //         than 260 characters.
        //     DirectoryNotFoundException:
        //         The path specified in sourceDirectoryName or destinationArchive is invalid,
        //         (for example, it is on an unmapped drive).
        //         -or-
        //         The directory specified by sourceDirectoryName does not exist.
        //     IOException:
        //         destinationArchive exists.
        //         -or-
        //         An I/O error occurred while opening a file to be archived.
        //     UnauthorizedAccessException:
        //         destinationArchive specified a directory.
        //         -or-
        //         The caller does not have the required permission.
        //     NotSupportedException:
        //         sourceDirectoryName or destinationArchive is in an invalid format.
        public static void CreateFromDirectory(String sourceDirectoryName, String destinationArchive);

        // Summary:
        //     Extracts all of the files in the specified archive to a directory on the file
        //     system. The specified directory must not exist. This method will create all
        //     subdirectories and the specified directory. If there is an error while extracting
        //     the archive, the archive will remain partially extracted. Each entry will be
        //     extracted such that the extracted file has the same relative path to the
        //     destinationDirectoryName as the entry has to the archive. The path is permitted
        //     to specify relative or absolute path information. Relative path information is
        //     interpreted as relative to the current working directory. If a file to be archived
        //     has an invalid last modified time, the first datetime representable in the Zip
        //     timestamp format (midnight on January 1, 1980) will be used.
        // 
        // Parameters:
        //     sourceArchive:
        //         The path to the archive on the file system that is to be extracted.
        //     destinationDirectoryName:
        //         The path to the directory on the file system. The directory specified must
        //         not exist, but the directory that it is contained in must exist.
        // 
        // Exceptions
        //     ArgumentException:
        //         sourceArchive or destinationDirectoryName is a zero-length string, contains
        //         only white space, or contains one or more invalid characters as defined by
        //         InvalidPathChars.
        //     ArgumentNullException:
        //         sourceArchive or destinationDirectoryName is null.
        //     PathTooLongException:
        //         sourceArchive or destinationDirectoryName specifies a path, file name, or
        //         both exceed the system-defined maximum length. For example, on Windows-based
        //         platforms, paths must be less than 248 characters, and file names must be less
        //         than 260 characters.
        //     DirectoryNotFoundException:
        //         The path specified by sourceArchive or destinationDirectoryName is invalid,
        //         (for example, it is on an unmapped drive).
        //     IOException:
        //         The directory specified by destinationDirectoryName already exists.
        //         -or-
        //         An I/O error has occurred.
        //         -or-
        //         An archive entry’s name is zero-length, contains only white space, or
        //         contains one or more invalid characters as defined by InvalidPathChars.
        //         -or-
        //         Extracting an archive entry would result in a file destination that is
        //         outside the destination directory (for example, because of parent directory
        //         accessors).
        //         -or-
        //         An archive entry has the same name as an already extracted entry from the
        //         same archive.
        //     UnauthorizedAccessException:
        //         The caller does not have the required permission.
        //     NotSupportedException:
        //         sourceArchive or destinationDirectoryName is in an invalid format. 
        //     FileNotFoundException:
        //         sourceArchive was not found.
        //     InvalidDataException:
        //         The archive specified by sourceArchive: Is not a valid ZipArchive
        //         -or-
        //         An archive entry was not found or was corrupt.
        //         -or-
        //         An archive entry has been compressed using a compression method that is
        //         not supported.
        public static void ExtractToDirectory(String sourceArchive, String destinationDirectoryName);
    }
}&lt;/pre&gt;
&lt;h2&gt;ZipArchiveEntry Class&lt;/h2&gt;
&lt;pre&gt;namespace Microsoft.Experimental.IO.Compression
{
    public class ZipArchiveEntry
    {
        // Summary:
        //     The last write time of the entry as stored in the Zip archive.
        //     When setting this property, the DateTime will be converted to
        //     the Zip timestamp format, which supports a resolution of two
        //     seconds. If the data in the last write time field is not a
        //     valid Zip timestamp, an indicator value of 1980 January 1
        //     at midnight will be returned.
        //
        // Exceptions:
        //     NotSupportedException:
        //         An attempt to set this property was made, but the ZipArchive
        //         that this entry belongs to was opened in read-only mode.
        //     ArgumentOutOfRangeException:
        //         An attempt was made to set this property to a value that
        //         cannot be represented in the Zip timestamp format. The
        //         earliest date/time that can be represented is 1980
        //         January 1 0:00:00 (midnight), and the last date/time that
        //         can be represented is 2107 December 31 23:59:58 (one second
        //         before midnight).
        public DateTimeOffset LastWriteTime;

        // Summary:
        //     The relative path of the entry as stored in the Zip archive.
        //     Note that Zip archives allow any string to be the path of the
        //     entry, including invalid and absolute paths.
        public String FullName;

        // Summary:
        //     The filename of the entry. This is equivalent to the substring
        //     of Fullname that follows the final directory separator character.
        public String Name;

        // Summary:
        //     The compressed size of the entry. If the archive that the entry
        //     belongs to is in Create mode, attempts to get this property will
        //     always throw an exception. If the archive that the entry belongs
        //     to is in update mode, this property will only be valid if the
        //     entry has not been opened. 
        //
        // Exceptions:
        //     InvalidOperationException:
        //         This property is not available because the entry has been
        //         written to or modified.
        public Int64 CompressedLength;

        // Summary:
        //     The uncompressed size of the entry. This property is not valid
        //     in Create mode, and it is only valid in Update mode if the entry
        //     has not been opened.
        //
        // Exceptions:
        //     InvalidOperationException:
        //         This property is not available because the entry has been
        //         written to or modified.
        public Int64 Length;

        // Summary:
        //     The ZipArchive that this entry belongs to. If this entry has
        //     been deleted, this will return null.
        public ZipArchive Archive;

        // Summary:
        //     Opens the entry. If the archive that the entry belongs to was
        //     opened in Read mode, the returned stream will be readable, and
        //     it may or may not be seekable. If Create mode, the returned stream
        //     will be writeable and not seekable. If Update mode, the returned
        //     stream will be readable, writeable, seekable, and support SetLength.
        //
        // Exceptions:
        //     IOException:
        //         The entry is already currently open for writing.
        //         -or-
        //         The entry has been deleted from the archive.
        //         -or-
        //         The archive that this entry belongs to was opened in
        //         ZipArchiveMode.Create, and this entry has already been written
        //         to once.
        //     InvalidDataException:
        //         The entry is missing from the archive or is corrupt and cannot
        //         be read.
        //         -or-
        //         The entry has been compressed using a compression method that
        //         is not supported.
        //     ObjectDisposedException:
        //         The ZipArchive that this entry belongs to has been disposed.
        // 
        // Returns:
        //     A Stream that represents the contents of the entry.
        public Stream Open();

        // Summary:
        //     Deletes the entry from the archive.
        //
        // Exceptions:
        //     IOException:
        //         The entry is already open for reading or writing.
        //     NotSupportedException:
        //         The ZipArchive that this entry belongs to was opened in a mode
        //         other than ZipArchiveMode.Update. 
        //     ObjectDisposedException:
        //         The ZipArchive that this entry belongs to has been disposed.
        public void Delete();

        // Summary:
        //     Returns the FullName of the entry.
        // 
        // Returns:
        //     FullName of the entry
        public override String ToString();

        // Summary:
        //     Creates a file on the file system with the entry’s contents and the
        //     specified name. The last write time of the file is set to the
        //     entry’s last write time. This method does allows overwriting of
        //     an existing file with the same name.
        // 
        // Parameters:
        //     destinationFileName:
        //         The name of the file that will hold the contents of the entry.
        //         The path is permitted to specify relative or absolute path
        //         information. Relative path information is interpreted as
        //         relative to the current working directory.
        //     overwrite:
        //         True to indicate overwrite.
        // 
        // Exceptions:
        //     UnauthorizedAccessException:
        //         The caller does not have the required permission.
        //     ArgumentException:
        //         destinationFileName is a zero-length string, contains only
        //         white space, or contains one or more invalid characters as
        //         defined by InvalidPathChars.
        //         -or-
        //         destinationFileName specifies a directory.
        //     ArgumentNullException:
        //         destinationFileName is null.
        //     PathTooLongException:
        //         The specified path, file name, or both exceed the system-
        //         defined maximum length. For example, on Windows-based platforms,
        //         paths must be less than 248 characters, and file names must be
        //         less than 260 characters.
        //     DirectoryNotFoundException:
        //         The path specified in destinationFileName is invalid (for example,
        //         it is on an unmapped drive).
        //     IOException:
        //         destinationFileName exists and overwrite is false.
        //         -or-
        //         An I/O error has occurred.
        //         -or-
        //         The entry is currently open for writing.
        //         -or-
        //         The entry has been deleted from the archive.
        //     NotSupportedException:
        //         destinationFileName is in an invalid format
        //         -or-
        //         The ZipArchive that this entry belongs to was opened in a
        //         write-only mode.
        //     InvalidDataException:
        //         The entry is missing from the archive or is corrupt and cannot
        //         be read
        //         -or-
        //         The entry has been compressed using a compression method that
        //         is not supported.
        //     ObjectDisposedException:
        //         The ZipArchive that this entry belongs to has been disposed.
        public void ExtractToFile(String destinationFileName, Boolean overwrite);

        // Summary:
        //     Creates a file on the file system with the entry’s contents and the
        //     specified name. The last write time of the file is set to the entry’s
        //     last write time. This method does not allow overwriting of an existing
        //     file with the same name. Attempting to extract explicit directories
        //     (entries with names that end in directory separator characters) will
        //     not result in the creation of a directory.
        // 
        // Parameters:
        //     destinationFileName:
        //         The name of the file that will hold the contents of the entry.
        //         The path is permitted to specify relative or absolute path
        //         information. Relative path information is interpreted as
        //         relative to the current working directory.
        // 
        // Exceptions:
        //     UnauthorizedAccessException:
        //         The caller does not have the required permission.
        //     ArgumentException:
        //         destinationFileName is a zero-length string, contains only white
        //         space, or contains one or more invalid characters as defined by
        //         InvalidPathChars.
        //         -or-
        //         destinationFileName specifies a directory.
        //     ArgumentNullException:
        //         destinationFileName is null.
        //     PathTooLongException:
        //         The specified path, file name, or both exceed the system-defined
        //         maximum length. For example, on Windows-based platforms, paths
        //         must be less than 248 characters, and file names must be less
        //         than 260 characters.
        //     DirectoryNotFoundException:
        //         The path specified in destinationFileName is invalid (for example,
        //         it is on an unmapped drive).
        //     IOException:
        //         destinationFileName exists.
        //         -or-
        //         An I/O error has occurred.
        //         -or-
        //         The entry is currently open for writing.
        //         -or-
        //         The entry has been deleted from the archive.
        //     NotSupportedException:
        //         destinationFileName is in an invalid format
        //         -or-
        //         The ZipArchive that this entry belongs to was opened in a
        //         write-only mode.
        //     InvalidDataException:
        //         The entry is missing from the archive or is corrupt and cannot
        //         be read
        //         -or-
        //         The entry has been compressed using a compression method that
        //         is not supported.
        //     ObjectDisposedException:
        //         The ZipArchive that this entry belongs to has been disposed.
        public void ExtractToFile(String destinationFileName);
    }
}&lt;/pre&gt;
&lt;h2&gt;ZipArchiveMode Enum&lt;/h2&gt;
&lt;pre&gt;namespace Microsoft.Experimental.IO.Compression
{
    public enum ZipArchiveMode
    {
        // Summary:
        //     Only reading entries from the archive is permitted. If the underlying
        //     file or stream is seekable, then files will be read from the archive
        //     on-demand as they are requested. If the underlying file or stream is not
        //     seekable, the entire archive will be held in memory. Requires that the
        //     underlying file or stream is readable.
        Read,

        // Summary:
        //     Only supports the creation of new archives. Only writing to newly created
        //     entries in the archive is permitted. Each entry in the archive can only
        //     be opened for writing once. If only one entry is written to at a time, data
        //     will be written to the underlying stream or file as soon as it is available.
        //     The underlying stream must be writeable, but need not be seekable.
        Create,

        // Summary:
        //     Reading and writing from entries in the archive is permitted. Requires that
        //     the contents of the entire archive be held in memory. The underlying file
        //     or stream must be readable, writeable and seekable. No data will be written
        //     to the underlying file or stream until the archive is disposed.
        Update
    }
}&lt;/pre&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 22:49:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive Class Reference 20100806104910P</guid></item><item><title>Updated Wiki: ZipArchive Samples</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive Samples&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive Samples&lt;/h2&gt;
&lt;h3&gt;Zipping/unzipping directories&lt;/h3&gt;If you just want to extract an archive to a directory or create an archive from a directory, a single line of code is all you need:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.ExtractToDirectory(&amp;quot;photos.zip&amp;quot;, @&amp;quot;photos\summer2010&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.CreateFromDirectory(@&amp;quot;docs\attach&amp;quot;, &amp;quot;attachment.zip&amp;quot;);&lt;/pre&gt;
&lt;h3&gt;More advanced manipulation&lt;/h3&gt;If you need more sophisticated manipulation of Zip archives, the ZipArchive and ZipArchiveEntry classes need to be used together. The following example extracts only the text files from an archive:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;data.zip&amp;quot;))
{
    foreach (var entry in archive.Entries)
    {
        if (entry.FullName.EndsWith(&amp;quot;.txt&amp;quot;, StringComparison.OrdinalIgnoreCase))
        {
            entry.ExtractToFile(Path.Combine(directory, entry.FullName));
        }
    }
}&lt;/pre&gt;&lt;br /&gt;The following sample creates an archive containing one file from the filesystem, and also generates an index of what&amp;#39;s included in the archive on the fly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;new.zip&amp;quot;, ZipArchiveMode.Create))
{
    var readmeEntry = archive.CreateEntry(&amp;quot;Readme.txt&amp;quot;);
    using (var writer = new StreamWriter(readmeEntry.Open()))
    {
        writer.WriteLine(&amp;quot;Included files: &amp;quot;);
        writer.WriteLine(&amp;quot;data.dat&amp;quot;);
    }

    archive.CreateEntryFromFile(&amp;quot;data.dat&amp;quot;, &amp;quot;data.dat&amp;quot;);
}&lt;/pre&gt;&lt;br /&gt;If you don&amp;#39;t want to (or can&amp;#39;t) touch the filesystem, ZipArchive can work with just streams. The following sample creates an archive on the output stream that contains one file whose contents are the input stream:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (ZipArchive archive = new ZipArchive(outstream, ZipArchiveMode.Create))
{
    ZipArchiveEntry entry = archive.CreateEntry(&amp;quot;data.dat&amp;quot;);
    using (Stream entryStream = entry.Open())
    {
        instream.CopyTo(entryStream);
    }
}&lt;/pre&gt;
&lt;h3&gt;ZipArchiveModes&lt;/h3&gt;
As shown in the samples above, there are different ZipArchiveMode values that tell the ZipArchive constructor to behave in different ways. Read (the default) provides read-only access. Create allows the creation of archives with some restrictions. For example, in Create mode opening two entries at the same time is an error - the first one must be opened, written to, and then closed before the next one is opened. Update, which was not used in any of the samples, allows arbitrary manipulations of archives. The downside to Update mode is that providing this functionality requires loading the entire archive into memory. Read and Create mode, on the other hand, read and write directly from the underlying store with only a small buffer.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 20:06:29 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive Samples 20100806080629P</guid></item><item><title>Updated Wiki: ZipArchive Samples</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive Samples&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive Samples&lt;/h2&gt;
&lt;h3&gt;Zipping/unzipping directories&lt;/h3&gt;If you just want to extract an archive to a directory or create an archive from a directory, a single line of code is all you need:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.ExtractToDirectory(&amp;quot;photos.zip&amp;quot;, @&amp;quot;photos\summer2010&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.CreateFromDirectory(@&amp;quot;docs\attach&amp;quot;, &amp;quot;attachment.zip&amp;quot;);&lt;/pre&gt;
&lt;h3&gt;More advanced manipulation&lt;/h3&gt;If you need more sophisticated manipulation of Zip archives, the ZipArchive and ZipArchiveEntry classes need to be used together. The following example extracts only the text files from an archive:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;data.zip&amp;quot;))
{
    foreach (var entry in archive.Entries)
    {
        if (entry.FullName.EndsWith(&amp;quot;.txt&amp;quot;, StringComparison.OrdinalIgnoreCase))
        {
            entry.ExtractToFile(Path.Combine(directory, entry.FullName));
        }
    }
}&lt;/pre&gt;&lt;br /&gt;The following sample creates an archive containing one file from the filesystem, and also generates an index of what&amp;#39;s included in the archive on the fly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;new.zip&amp;quot;, ZipArchiveMode.Create))
{
    var readmeEntry = archive.CreateEntry(&amp;quot;Readme.txt&amp;quot;);
    using (var writer = new StreamWriter(readmeEntry.Open()))
    {
        writer.WriteLine(&amp;quot;Included files: &amp;quot;);
        writer.WriteLine(&amp;quot;data.dat&amp;quot;);
    }

    archive.CreateEntryFromFile(&amp;quot;data.dat&amp;quot;, &amp;quot;data.dat&amp;quot;);
}&lt;/pre&gt;&lt;br /&gt;If you don&amp;#39;t want to (or can&amp;#39;t) touch the filesystem, ZipArchive can work with just streams. The following sample creates an archive on the output stream that contains one file whose contents are the input stream:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (ZipArchive archive = new ZipArchive(outstream, ZipArchiveMode.Create))
{
    ZipArchiveEntry entry = archive.CreateEntry(&amp;quot;data.dat&amp;quot;);
    using (Stream entryStream = entry.Open())
    {
        instream.CopyTo(entryStream);
    }
}&lt;/pre&gt;
&lt;h3&gt;ZipArchiveModes&lt;/h3&gt;
As shown in the samples above, there are different ZipArchiveMode values that tell the ZipArchive constructor to behave in different ways. Read (the default) provides read-only access. Create allows the creation of archives with some restrictions. For example, in Create mode opening two entries at the same time is an error - the first one must be opened, written to, and then closed before the next one is opened. Update, which was not used in any of the samples, allows arbitrary manipulations of archives. The downside to Update mode is that providing this functionality requires loading the entire archive into memory. Read and Create mode, on the other hand, read and write directly from the underlying store with only a small buffer.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 20:06:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive Samples 20100806080628P</guid></item><item><title>Updated Wiki: ZipArchive Samples</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive Samples&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive Samples&lt;/h2&gt;
&lt;h3&gt;Zipping/unzipping directories&lt;/h3&gt;If you just want to extract an archive to a directory or create an archive from a directory, a single line of code is all you need:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.ExtractToDirectory(&amp;quot;photos.zip&amp;quot;, @&amp;quot;photos\summer2010&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.CreateFromDirectory(@&amp;quot;docs\attach&amp;quot;, &amp;quot;attachment.zip&amp;quot;);&lt;/pre&gt;
&lt;h3&gt;More advanced manipulation&lt;/h3&gt;If you need more sophisticated manipulation of Zip archives, the ZipArchive and ZipArchiveEntry classes need to be used together. The following example extracts only the text files from an archive:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;data.zip&amp;quot;))
{
    foreach (var entry in archive.Entries)
    {
        if (entry.FullName.EndsWith(&amp;quot;.txt&amp;quot;, StringComparison.OrdinalIgnoreCase))
        {
            entry.ExtractToFile(Path.Combine(directory, entry.FullName));
        }
    }
}&lt;/pre&gt;&lt;br /&gt;The following sample creates an archive containing one file from the filesystem, and also generates an index of what&amp;#39;s included in the archive on the fly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;new.zip&amp;quot;, ZipArchiveMode.Create))
{
    var readmeEntry = archive.CreateEntry(&amp;quot;Readme.txt&amp;quot;);
    using (var writer = new StreamWriter(readmeEntry.Open()))
    {
        writer.WriteLine(&amp;quot;Included files: &amp;quot;);
        writer.WriteLine(&amp;quot;data.dat&amp;quot;);
    }

    archive.CreateEntryFromFile(&amp;quot;data.dat&amp;quot;, &amp;quot;data.dat&amp;quot;);
}&lt;/pre&gt;&lt;br /&gt;If you don&amp;#39;t want to (or can&amp;#39;t) touch the filesystem, ZipArchive can work with just streams. The following sample creates an archive on the output stream that contains one file whose contents are the input stream:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (ZipArchive archive = new ZipArchive(outstream, ZipArchiveMode.Create))
{
    ZipArchiveEntry entry = archive.CreateEntry(&amp;quot;data.dat&amp;quot;);
    using (Stream entryStream = entry.Open())
    {
        instream.CopyTo(entryStream);
    }
}&lt;/pre&gt;
&lt;h3&gt;ZipArchiveModes&lt;/h3&gt;
As shown in the samples above, there are different ZipArchiveMode values that tell the ZipArchive constructor to behave in different ways. Read (the default) provides read-only access. Create allows the creation of archives with some restrictions. For example, in Create mode opening two entries at the same time is an error - the first one must be opened, written to, and then closed before the next one is opened. Update, which was not used in any of the samples, allows arbitrary manipulations of archives. The downside to Update mode is that providing this functionality requires loading the entire archive into memory. Read and Create mode, on the other hand, read and write directly from the underlying store with only a small buffer.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 20:06:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive Samples 20100806080628P</guid></item><item><title>Updated Wiki: ZipArchive Samples</title><link>http://bcl.codeplex.com/wikipage?title=ZipArchive Samples&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;ZipArchive Samples&lt;/h2&gt;
&lt;h3&gt;Zipping/unzipping directories&lt;/h3&gt;If you just want to extract an archive to a directory or create an archive from a directory, a single line of code is all you need:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.ExtractToDirectory(&amp;quot;photos.zip&amp;quot;, @&amp;quot;photos\summer2010&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;ZipArchive.CreateFromDirectory(@&amp;quot;docs\attach&amp;quot;, &amp;quot;attachment.zip&amp;quot;);&lt;/pre&gt;
&lt;h3&gt;More advanced manipulation&lt;/h3&gt;If you need more sophisticated manipulation of Zip archives, the ZipArchive and ZipArchiveEntry classes need to be used together. The following example extracts only the text files from an archive:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;data.zip&amp;quot;))
{
    foreach (var entry in archive.Entries)
    {
        if (entry.FullName.EndsWith(&amp;quot;.txt&amp;quot;, StringComparison.OrdinalIgnoreCase))
        {
            entry.ExtractToFile(Path.Combine(directory, entry.FullName));
        }
    }
}&lt;/pre&gt;&lt;br /&gt;The following sample creates an archive containing one file from the filesystem, and also generates an index of what&amp;#39;s included in the archive on the fly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (var archive = new ZipArchive(&amp;quot;new.zip&amp;quot;, ZipArchiveMode.Create))
{
    var readmeEntry = archive.CreateEntry(&amp;quot;Readme.txt&amp;quot;);
    using (var writer = new StreamWriter(readmeEntry.Open()))
    {
        writer.WriteLine(&amp;quot;Included files: &amp;quot;);
        writer.WriteLine(&amp;quot;data.dat&amp;quot;);
    }

    archive.CreateEntryFromFile(&amp;quot;data.dat&amp;quot;, &amp;quot;data.dat&amp;quot;);
}&lt;/pre&gt;&lt;br /&gt;If you don&amp;#39;t want to (or can&amp;#39;t) touch the filesystem, ZipArchive can work with just streams. The following sample creates an archive on the output stream that contains one file whose contents are the input stream:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;using (ZipArchive archive = new ZipArchive(outstream, ZipArchiveMode.Create))
{
    ZipArchiveEntry entry = archive.CreateEntry(&amp;quot;data.dat&amp;quot;);
    using (Stream entryStream = entry.Open())
    {
        instream.CopyTo(entryStream);
    }
}&lt;/pre&gt;
&lt;h3&gt;ZipArchiveModes&lt;/h3&gt;
As shown in the samples above, there are different ZipArchiveMode values that tell the ZipArchive constructor to behave in different ways. Read (the default) provides read-only access. Create allows the creation of archives with some restrictions. For example, in Create mode opening two entries at the same time is an error - the first one must be opened, written to, and then closed before the next one is opened. Update, which was not used in any of the samples, allows arbitrary manipulations of archives. The downside to Update mode is that providing this functionality requires loading the entire archive into memory. Read and Create mode, on the other hand, read and write directly from the underlying store with only a small buffer.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>hrlee</author><pubDate>Fri, 06 Aug 2010 20:06:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ZipArchive Samples 20100806080628P</guid></item></channel></rss>