﻿<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscatorreferencerules SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscatorReferenceRule_v1.1.dtd">
<dotfuscatorreferencerules >
  <referencerule rulekey="{F4074361-D4CE-4e40-B907-BA9668A45996}"  ruleisdefault="false" name="WCF Contract Objects">
    <comment>Prevents removal of types and membors decorated with OperationContract, ServiceContract, DataContract, or DataMember attributes.</comment>
     <triggerlist>
      <type name=".*" regex="true">
        <customattribute name="System\.ServiceModel\.ServiceContractAttribute" regex="true" allowinheritance="true" />
        <customattribute name="System\.Runtime\.Serialization\.DataContractAttribute" regex="true" />
        <method name=".*" regex="true">
          <customattribute name="System\.ServiceModel\.OperationContractAttribute" regex="true" />
        </method>
        <field name="Field" regex="true">
          <customattribute name="System\.Runtime\.Serialization\.DataMemberAttribute" regex="true" />
        </field>
        <propertymember name=".*" regex="true">
          <customattribute name="System\.Runtime\.Serialization\.DataMemberAttribute" regex="true" />
        </propertymember>
      </type>
    </triggerlist>
  </referencerule>
  <referencerule rulekey="{6655B10A-FD58-462d-8D4F-5B1316DFF0FF}"  ruleisdefault="true" name="Auto-generated ResourceManager">
    <comment>Exclude resource classes which are auto-generated by Visual Studio. It uses reflection to create an instance of ResourceManager based on the class's name specified by a string value.</comment>
    <excludelist>
      <type name=".*[(Properties)(My)]\.Resources" regex="true" />
    </excludelist>
  </referencerule>
  <referencerule rulekey="{7D9C8B02-2383-420f-8740-A9760394C2C1}" ruleisdefault="true" name="Types and fields marked as serializable">
    <comment>Exclude all serializable types.  This also excludes all serializable fields from renaming.</comment>
    <excludelist>
      <type name=".*" regex="true" speclist="+serializable">
        <comment>Exclude all serializable types.  This also excludes all serializable fields from renaming.</comment>
        <field name=".*" speclist="-notserialized" regex="true" />
      </type>
    </excludelist>
</referencerule>
  <referencerule rulekey="{229FD6F8-5BCC-427b-8F72-A7A413ECDF1A}" ruleisdefault="true" name="Types with System.Web.Services attributes">
    <comment>Exclude all types that are decorated with attributes from the System.Web.Services namespace.</comment>
    <excludelist>
      <type name=".*" regex="true">
        <comment>Exclude all types that are decorated with attributes from the System.Web.Services namespace.</comment>
        <customattribute name="System.Web.Services.*" regex="true" />
      </type>
    </excludelist>
  </referencerule>
  <referencerule rulekey="{2B7E7C8C-A39A-4db8-9DFC-6AFD38509061}" ruleisdefault="true" name="Methods with System.Web.Services attributes">
    <comment>Exclude all methods that are decorated with attributes from the System.Web.Services namespace.</comment>
    <excludelist>
      <type name=".*" regex="true" excludetype="false">
        <comment>Exclude all methods that are decorated with attributes from the System.Web.Services namespace.</comment>
        <method name=".*" regex="true">
          <customattribute name="System.Web.Services.*" regex="true" />
        </method>
      </type>
    </excludelist>
  </referencerule>
  <referencerule rulekey="{D97286EB-CF80-4ae8-94D4-E90131E6D0D7}" ruleisdefault="false" name="Fields with AccessedThroughPropertyAttribute">
    <comment>Exclude fields that are decorated with an AccessedThroughPropertyAttribute from the System.Runtime.CompilerServices namespace. In Visual Basic, any accessible WithEvents property contains a private field that has this attribute. This attribute is not stripped out during compilation so that it may be examined by other assemblies via reflection, so this rule need only be used when in Library mode.</comment>
    <excludelist>
      <type name=".*" regex="true" excludetype="false">
        <comment>Exclude fields that are decorated with an AccessedThroughPropertyAttribute from the System.Runtime.CompilerServices namespace. In Visual Basic, any accessible WithEvents property contains a private field that has this attribute. This attribute is not stripped out during compilation so that it may be examined by other assemblies via reflection, so this rule need only be used when in Library mode.</comment>
        <field name=".*" regex="true">
          <customattribute name="System\.Runtime\.CompilerServices\.AccessedThroughPropertyAttribute" regex="true" />
        </field>
      </type>
    </excludelist>
  </referencerule>
    <referencerule rulekey="{AB89403F-5E08-4adf-8386-6D34AF0ADBD3}" ruleisdefault="false" name="CrystalReport ReportClass Objects">
    <comment>Excludes all types with a supertype of CrystalDecisions.CrystalReports.Engine.ReportClass</comment>
    <excludelist>
      <type name=".*" regex="true" excludetype="false">
        <comment>Excludes all types with a supertype of CrystalDecisions.CrystalReports.Engine.ReportClass</comment>
        <supertype name="CrystalDecisions\.CrystalReports\.Engine\.ReportClass" regex="true" />
      </type>
    </excludelist>
  </referencerule>
  <referencerule rulekey="{89769974-93E9-4e71-8D92-BE70E855ACFC}" ruleisdefault="true" name="Auto-generated Application settings">
    <comment>Excludes all types with a supertype of System.Configuration.ApplicationSettingsBase</comment>
    <excludelist>
      <type name=".*" regex="true">
        <supertype name="System\.Configuration\.ApplicationSettingsBase" regex="true" />
      </type>
    </excludelist>
  </referencerule>
  <referencerule rulekey="{6f022A59-3AD6-4C69-8D9B-6870B9B9E362}" ruleisdefault="false" name="Windows Workflow Activities">
    <comment>Excludes all types with a supertype of System.Workflow.ComponentModel.Activity</comment>
    <excludelist>
      <type name=".*" regex="true">
        <supertype name=".*Activity" regex="true" />
      </type>
    </excludelist>
  </referencerule>
 </dotfuscatorreferencerules>