我试图通过扩展现有的msbuild文件(web applicartion .csproj文件)来为msbuild文件指定一些额外的目标/任务。我们的想法是将配置特定的任务放在这个“扩展的ms构建文件”中,并在我们的构建服务器(TeamCity)中使用该文件。我最初尝试解决它的方法是在我的web项目中添加一个文件夹“msbuildscripts”并将扩展的ms构建文件放在那里:
<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<Import Project="../My.Web.csproj" />
...more stuff...
</Project>
然后使用以下内容构建此文件:
c:\myweb\msbuild.exe msbuildscripts/extended.msbuild.file.xml
现在,这不会起作用,因为在导入原始ms构建文件时,该csproj文件将在“错误”文件夹(msbuildscripts)中“执行”,并且csproj-build-file将找不到任何引用的文件夹/项目
有没有办法告诉msbuild.exe使用特定的工作目录?我知道使用执行任务可以解决这个问题,但这似乎不是一个好的解决方案。
答案 0 :(得分:3)
像这样使用MSBuild任务:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="MyBuild">
<ItemGroup>
<ProjectToBuild Include="../My.Web.csproj" />
</ItemGroup>
<Target Name="MyBuild">
<MSBuild Targets="Build" Projects="@(ProjectToBuild)"></MSBuild>
</Target>
</Project>