通过MSBuild参数排除/删除.csproj



在团队构建编译期间,我需要从.sln文件中排除abc.Test.csproj

我试过使用/ignoreprojectextensions=.Test.csproj,但对我的目的不起作用。请帮我完成这件事。

您将创建一个新的配置(调试和发布是默认配置),在这个新配置中,您将不会构建指定的.csproj.

然后您将按照该配置进行构建。

参见:

Msbuild是否识别除DEBUG|RELEASE 之外的任何构建配置

附加

在不进行新的/自定义配置的情况下,这是我唯一可以推理的解决方案。

放入下面的xml'ish代码。。在名为"MyBuild.proj"的文件中,保存它,然后调用

msbuild.exe MyBuild.proj

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapped">
    <PropertyGroup>
        <WorkingDirectory>.</WorkingDirectory>
    </PropertyGroup>
    <Target Name="AllTargetsWrapped">
        <CallTarget Targets="ShowReservedProperties" />
        <CallTarget Targets="BuildOtherProjects" />
    </Target>
    <Target Name="BuildOtherProjects">
        <ItemGroup>
            <ProjectReferencesExcludes Include="$(WorkingDirectory)UnitTests.csproj" />
            <ProjectReferencesExcludes Include="$(WorkingDirectory)SomeOtherProject.csproj" />
        </ItemGroup>
        <ItemGroup>
            <ProjectReferences Include="$(WorkingDirectory)***.*proj" Exclude="@(ProjectReferencesExcludes)" />
        </ItemGroup>
        <Message Text="List of projs to be built:"/>
        <Message Text="@(ProjectReferences->'&quot;%(fullpath)&quot;' , '%0D%0A')"/>
        <Message Text="   "/>
        <Message Text="   "/>
        <MSBuild
            Projects="@(ProjectReferences)"
            Targets="Build">
            <Output
                TaskParameter="TargetOutputs"
                ItemName="AssembliesBuiltByChildProjects" />
        </MSBuild>
    <Message Text="   "/>
    <Message Text="   "/>           
    <Message Text="List of AssembliesBuiltByChildProjects:"/>
    <Message Text="@(AssembliesBuiltByChildProjects->'&quot;%(fullpath)&quot;' , '%0D%0A')"/>
    <Message Text="   "/>
    <Message Text="   "/>   

    </Target>
    <Target Name="ShowReservedProperties">  
        <Message Text="MSBuild: $(MSBuild)"/>
        <Message Text="MSBuildBinPath: $(MSBuildBinPath)"/>
        <Message Text="MSBuildExtensionsPath: $(MSBuildExtensionsPath)"/>
        <Message Text="MSBuildExtensionsPath32: $(MSBuildExtensionsPath32)"/>
        <Message Text="MSBuildExtensionsPath64: $(MSBuildExtensionsPath64)"/>
        <Message Text="MSBuildLastTaskResult: $(MSBuildLastTaskResult)"/>
        <Message Text="MSBuildNodeCount: $(MSBuildNodeCount)"/>
        <Message Text="MSBuildOverrideTasksPath: $(MSBuildOverrideTasksPath)"/>
        <Message Text="MSBuildProgramFiles32: $(MSBuildProgramFiles32)"/>
        <Message Text="MSBuildProjectDefaultTargets: $(MSBuildProjectDefaultTargets)"/>
        <Message Text="MSBuildProjectDirectory: $(MSBuildProjectDirectory)"/>
        <Message Text="MSBuildProjectDirectoryNoRoot: $(MSBuildProjectDirectoryNoRoot)"/>
        <Message Text="MSBuildProjectExtension: $(MSBuildProjectExtension)"/>
        <Message Text="MSBuildProjectFile: $(MSBuildProjectFile)"/>
        <Message Text="MSBuildProjectFullPath: $(MSBuildProjectFullPath)"/>
        <Message Text="MSBuildProjectName: $(MSBuildProjectName)"/>
        <Message Text="MSBuildStartupDirectory: $(MSBuildStartupDirectory)"/>
        <Message Text="MSBuildThisFile: $(MSBuildThisFile)"/>
        <Message Text="MSBuildThisFileDirectory: $(MSBuildThisFileDirectory)"/>
        <Message Text="MSBuildThisFileDirectoryNoRoot: $(MSBuildThisFileDirectoryNoRoot)"/>
        <Message Text="MSBuildThisFileExtension: $(MSBuildThisFileExtension)"/>
        <Message Text="MSBuildThisFileFullPath: $(MSBuildThisFileFullPath)"/>
        <Message Text="MSBuildThisFileName: $(MSBuildThisFileName)"/>
        <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)"/>
        <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)"/>       
    </Target>   


</Project>

注意,如果您将一个csproj放在"排除"列表中,但另一个cspro引用/依赖于它,则会构建它(无论您"排除"了什么)。

最新更新