在另一个msbuild文件中导入msbuild文件时出现工作目录问题

时间:2011-09-28 09:46:56

标签: msbuild import path csproj

我试图通过扩展现有的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使用特定的工作目录?我知道使用执行任务可以解决这个问题,但这似乎不是一个好的解决方案。

1 个答案:

答案 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>