<?xml version="1.0" encoding="utf-8"?>
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE.md file in the project root for more information. -->
<Rule Name="ResolvedCOMReference"
      Description="COM Reference Properties"
      DisplayName="COM Reference"
      PageTemplate="generic"
      xmlns="http://schemas.microsoft.com/build/2009/properties">
  <Rule.DataSource>
    <DataSource HasConfigurationCondition="False"
                ItemType="COMReference"
                MSBuildTarget="ResolveComReferencesDesignTime"
                Persistence="ResolvedReference"
                SourceOfDefaultValue="AfterContext"
                SourceType="TargetResults" />
  </Rule.DataSource>

  <StringListProperty Name="Aliases"
                      Description="A comma-delimited list of aliases to this reference."
                      DisplayName="Aliases"
                      Separator=",">
    <StringListProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </StringListProperty.DataSource>
  </StringListProperty>

  <StringProperty Name="BrowsePath"
                  ReadOnly="True"
                  Visible="False">
    <StringProperty.DataSource>
      <DataSource ItemType="COMReference"
                  PersistedName="Identity"
                  Persistence="Intrinsic"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>
                  
  <BoolProperty Name="CopyLocal"
                Description="Indicates whether the reference will be copied to the output directory."
                DisplayName="Copy Local">
    <BoolProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  PersistedName="Private"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </BoolProperty.DataSource>
  </BoolProperty>

  <StringProperty Name="Culture"
                  ReadOnly="True"
                  Visible="False" />

  <StringProperty Name="Description"
                  ReadOnly="True"
                  Visible="False" />

  <BoolProperty Name="EmbedInteropTypes"
                Description="Indicates whether types defined in this assembly will be embedded into the target assembly."
                DisplayName="Embed Interop Types">
    <BoolProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </BoolProperty.DataSource>
  </BoolProperty>

  <EnumProperty Name="FileType"
                ReadOnly="True"
                Visible="False">
    <EnumValue Name="Assembly"
               DisplayName=".NET assembly" />
    <EnumValue Name="ActiveX"
               DisplayName="COM type library" />
    <EnumValue Name="Native Assembly"
               DisplayName="Native Assembly" />
  </EnumProperty>

  <StringProperty Name="FusionName"
                  ReadOnly="True"
                  Visible="False" />

  <StringProperty Name="Guid"
                  Description="The GUID of the COM server."
                  DisplayName="CLSID">
    <StringProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>

  <StringProperty Name="HintPath"
                  Visible="false" />

  <StringProperty Name="Identity"
                  Description="Security identity of the referenced assembly (see System.Reflection.Assembly.Evidence or System.Security.Policy.Evidence)."
                  DisplayName="Identity"
                  ReadOnly="True">
    <StringProperty.DataSource>
      <DataSource PersistedName="{}{Identity}"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>

  <StringProperty Name="IsImplicitlyDefined"
                  ReadOnly="True"
                  Visible="False" />

  <BoolProperty Name="Isolated"
                DisplayName="Isolated">
    <BoolProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </BoolProperty.DataSource>
  </BoolProperty>

  <BoolProperty Name="IsWinMDFile"
                Visible="false" />

  <StringProperty Name="Lcid"
                  Description="The LCID of the COM server."
                  DisplayName="Locale">
    <StringProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>

  <StringProperty Name="Name"
                  ReadOnly="True"
                  Visible="false" />

  <StringProperty Name="OriginalItemSpec"
                  ReadOnly="True"
                  Visible="False" />

  <StringProperty Name="RequiredTargetFramework"
                  Visible="False" />

  <StringProperty Name="ResolvedPath"
                  Description="Location of the file being referenced."
                  DisplayName="Path"
                  ReadOnly="True">
    <StringProperty.DataSource>
      <DataSource PersistedName="Identity"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>

  <StringProperty Name="Path"
                  ReadOnly="True"
                  Visible="False">
    <StringProperty.DataSource>
      <DataSource PersistedName="Identity"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>

  <StringProperty Name="RuntimeVersion"
                  ReadOnly="True"
                  Visible="False" />

  <StringProperty Name="SDKIdentity"
                  Visible="false" />

  <BoolProperty Name="SpecificVersion"
                Visible="False" />

  <BoolProperty Name="StrongName"
                ReadOnly="True"
                Visible="False" />

  <StringProperty Name="Version"
                  Description="Version of reference."
                  DisplayName="Version"
                  ReadOnly="True" />

  <IntProperty Name="VersionMajor"
               DisplayName="Major Version">
    <IntProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </IntProperty.DataSource>
  </IntProperty>

  <IntProperty Name="VersionMinor"
               DisplayName="Minor Version">
    <IntProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </IntProperty.DataSource>
  </IntProperty>

  <BoolProperty Name="Visible"
                ReadOnly="True"
                Visible="False" />

  <BoolProperty Name="WinMDFile"
                ReadOnly="True"
                Visible="false" />

  <StringProperty Name="WrapperTool"
                  DisplayName="Wrapper Tool">
    <StringProperty.DataSource>
      <DataSource HasConfigurationCondition="False"
                  ItemType="COMReference"
                  Persistence="ProjectFile"
                  SourceOfDefaultValue="AfterContext" />
    </StringProperty.DataSource>
  </StringProperty>

</Rule>
