从生成中排除文件
在项目文件中,可以使用通配符将所有文件包括在一个目录或一组嵌套目录中,以作为生成的输入。 但是,对于目录中的某个文件或嵌套目录中的某个目录,你可能并不希望将其作为生成的输入包括在内。 你可以从输入列表中显示排除该文件或目录。 有些时候,你只希望在特定情况下才包括项目中的某个文件。 那么你可以显式声明将文件包括在生成中的条件。
从生成的输入中排除文件或目录
项列表是生成的输入文件。 要包括的项是使用 Include
属性单独或作为组声明的。 例如:
<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>
如果你已使用通配符将所有文件包括在一个目录或一组嵌套的目录中以作为生成的输入,但对于目录中的某个文件或嵌套目录中的某个目录,你可能并不希望将其包括在内。 若要从项列表中排除某个项,可使用 Exclude
属性。
包括除 Form2 以外的所有.cs 或.vb 文件
使用以下
Include
和Exclude
属性之一:<CSFile Include="*.cs" Exclude="Form2.cs"/>
或
<VBFile Include="*.vb" Exclude="Form2.vb"/>
包括除 Form2 和 Form3 以外的所有.cs 或.vb 文件
使用以下
Include
和Exclude
属性之一:<CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
或
<VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
包括除 Version2 目录中的 .jpg 文件以外,图像目录子目录中的所有 .jpg 文件
使用以下
Include
和Exclude
属性:<JPGFile Include="Images\**\*.jpg" Exclude = "Images\**\Version2\*.jpg"/>
注意
必须指定这两个属性的路径。 如果你使用绝对路径在
Include
属性中指定文件位置,那么在Exclude
属性中也必须使用绝对路径;如果你在Include
属性中使用相对路径,那么在Exclude
属性中也必须使用相对路径。
使用条件从生成的输入中排除文件或目录
如果你希望在调试生成中包括某些项,而不希望在发布生成中包括这些项,则可以使用 Condition
属性来指定包括该项的条件。
仅在发布生成中包括文件 Formula.vb
使用类似于如下的
Condition
属性:<Compile Include="Formula.vb" Condition=" '$(Configuration)' == 'Release' " />
示例
以下代码示例生成一个项目,其中包括除 Form2.cs 以外目录中的所有 .cs 文件 。
<Project DefaultTargets="Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<builtdir>built</builtdir>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" Exclude="Form2.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>
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈