我需要构建解决方案但排除一个项目。我该怎么办?我搜索了很多关于这个问题但没什么可以帮助的。
ItemGroup 部分引发以下异常:
元素无效。未知任务或数据类型。
PropertyGroup 也会引发异常。
以下是我的代码示例:
<project name="TI 8.1.6 build script">
<ItemGroup>
<Solution Include="${ROOT}\Core\TI Core.sln" Exclude="${ROOT}\Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj"/>
</ItemGroup>
...
</project>
那么有人可以帮助我吗?
答案 0 :(得分:57)
您可以使用Visual Studio中的build configuration在解决方案级别排除特定Configuration Manager Dialog的项目:
然后,您只需在解决方案文件上调用msbuild
,指定要使用的构建配置:
msbuild /property:Configuration=Release MySolution.sln
答案 1 :(得分:16)
Enrico建议的解决方案是最通用的解决方案。另一种解决方案可能是直接使用<MSBuild>
任务。如果您拥有特定目录下的所有项目文件,或者能够轻松枚举您要构建的所有项目(即解决方案中的项目数量不是很大),这将对您有用。
例如,这个msbuild文件将构建当前目录下的每个项目,但特定项目除外:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MyProjectReferences Include="**\*.*proj" />
<MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" />
</ItemGroup>
<Target Name="BuildAllExceptWixProject">
<MSBuild Projects="@(MyProjectReferences)" Targets="Build" />
</Target>
</Project>
然后,您可以使用命令行msbuild <myproject> /t:BuildAllExceptWixProject
答案 2 :(得分:1)
从 VS 2019 和 MSBuild 16.7 开始,正确的方法是使用解决方案过滤器。 Ref
答案 3 :(得分:0)
在解决方案文件(.sln)中,删除Build.0条目。例如:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MyProject", "MyProject.vcxproj", "{2281D9E7-5261-433D-BB04-176A61500CA3}"
EndProject
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2281D9E7-5261-433D-BB04-176A61500CA3}.Debug|x86.Build.0 = Debug|x64
如果删除此“ Build.0”条目,它将很好地加载到解决方案中,但不会通过GUI或通过外部MSBuild构建。
答案 4 :(得分:-1)
创建一个master.proj文件:
在另一个ItemGroup中为程序添加DefaultExclude属性-将其放在解决方案的前面
-BA是加拿大人
配置=发布
发布
将master.proj放到包含程序的目录中,并用msbuild master.proj
编译所有内容,除了... HelloWorld