Wybieranie plików do kompilacji

Podczas kompilowania projektu zawierającego kilka plików można wyświetlić poszczególne pliki oddzielnie w pliku projektu lub użyć symboli wieloznacznych do uwzględnienia wszystkich plików w jednym katalogu lub zagnieżdżonego zestawu katalogów.

Określanie danych wejściowych

Elementy reprezentują dane wejściowe kompilacji. Aby uzyskać więcej informacji na temat elementów, zobacz Elementy.

Aby dołączyć pliki do kompilacji, muszą one być uwzględnione na liście elementów w pliku projektu MSBuild. Wiele plików można dodać do list elementów, dołączając pliki pojedynczo lub używając symboli wieloznacznych do dołączania wielu plików jednocześnie.

Aby zadeklarować elementy indywidualnie

  • Include Użyj atrybutów podobnych do następujących:

    <CSFile Include="form1.cs"/>

    or

    <VBFile Include="form1.vb"/>

    Uwaga

    Jeśli elementy w kolekcji elementów nie znajdują się w tym samym katalogu co plik projektu, musisz określić pełną lub względną ścieżkę do elementu. Na przykład: Include="..\..\form2.cs".

Aby zadeklarować wiele elementów

  • Include Użyj atrybutów podobnych do następujących:

    <CSFile Include="form1.cs;form2.cs"/>

    lub

    <VBFile Include="form1.vb;form2.vb"/>

Określanie danych wejściowych z symbolami wieloznacznymi

Można również używać symboli wieloznacznych, aby rekursywnie dołączać wszystkie pliki lub tylko określone pliki z podkatalogów jako dane wejściowe dla kompilacji. Aby uzyskać więcej informacji na temat symboli wieloznacznych, zobacz Elementy

Poniższe przykłady są oparte na projekcie zawierającym pliki graficzne w następujących katalogach i podkatalogach z plikiem projektu znajdującym się w katalogu project :

Project\Images\BestJpgs

Project\Images\ImgJpgs

Project\Images\ImgJpgs\Img1

Aby uwzględnić wszystkie pliki jpg w katalogu Images i podkatalogach

  • Użyj następującego Include atrybutu:

    Include="Images\**\*.jpg"

Aby dołączyć wszystkie pliki jpg rozpoczynające się od img

  • Użyj następującego Include atrybutu:

    Include="Images\**\img*.jpg"

Aby uwzględnić wszystkie pliki w katalogach z nazwami kończącymi się na jpg

  • Użyj jednego z następujących Include atrybutów:

    Include="Images\**\*jpgs\*.*"

    lub

    Include="Images\**\*jpgs\*"

Przekazywanie elementów do zadania

W pliku projektu można użyć notacji @() w zadaniach, aby określić całą listę elementów jako dane wejściowe kompilacji. Możesz użyć tej notacji niezależnie od tego, czy wyświetlasz listę wszystkich plików oddzielnie, czy też używasz symboli wieloznacznych.

Aby użyć wszystkich plików Visual C# lub Visual Basic jako danych wejściowych

  • Include Użyj atrybutów podobnych do następujących:

    <CSC Sources="@(CSFile)">...</CSC>

    or

    <VBC Sources="@(VBFile)">...</VBC>

Uwaga

Aby określić dane wejściowe dla kompilacji, należy użyć symboli wieloznacznych z elementami; Nie można określić danych wejściowych przy użyciu atrybutu Sources w zadaniach programu MSBuild, takich jak Csc lub Vbc. Poniższy przykład nie jest prawidłowy w pliku projektu:

<CSC Sources="*.cs">...</CSC>

Przykład 1

Poniższy przykład kodu przedstawia projekt, który zawiera oddzielnie wszystkie pliki wejściowe.

<Project DefaultTargets="Compile"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
    <PropertyGroup>
        <Builtdir>built</Builtdir>
    </PropertyGroup>

    <ItemGroup>
        <CSFile Include="Form1.cs"/>
        <CSFile Include="AssemblyInfo.cs"/>

        <Reference Include="System.dll"/>
        <Reference Include="System.Data.dll"/>
        <Reference Include="System.Drawing.dll"/>
        <Reference Include="System.Windows.Forms.dll"/>
        <Reference Include="System.XML.dll"/>
    </ItemGroup>

    <Target Name="PreBuild">
        <Exec Command="if not exist $(builtdir) md $(builtdir)"/>
    </Target>

    <Target Name="Compile" DependsOnTargets="PreBuild">
        <Csc Sources="@(CSFile)"
            References="@(Reference)"
            OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
            TargetType="exe" />
    </Target>
</Project>

Przykład 2

Poniższy przykład kodu używa symbolu wieloznakowego do uwzględnienia wszystkich plików cs .

<Project DefaultTargets="Compile"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >

    <PropertyGroup>
        <builtdir>built</builtdir>
    </PropertyGroup>

    <ItemGroup>
        <CSFile Include="*.cs"/>

        <Reference Include="System.dll"/>
        <Reference Include="System.Data.dll"/>
        <Reference Include="System.Drawing.dll"/>
        <Reference Include="System.Windows.Forms.dll"/>
        <Reference Include="System.XML.dll"/>
    </ItemGroup>

    <Target Name="PreBuild">
        <Exec Command="if not exist $(builtdir) md $(builtdir)"/>
    </Target>

    <Target Name="Compile" DependsOnTargets="PreBuild">
        <Csc Sources="@(CSFile)"
            References="@(Reference)"
            OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
            TargetType="exe" />
    </Target>
</Project>